Практические примеры использования find
Sep 8, 2016 20:54 · 479 words · 3 minute read
Утилита find
— мощный инструмент для поиска файлов в UNIX-подобных ОС. Давайте рассмотрим конкретные примеры использования find
, которые будут полезны админам с любым опытом!
Начнем с самых простых примеров. Регистрозависимый поиск по имени файла:
find -name "Test_file.txt"
Регистронезависимый поиск по имени файла:
find -iname "Test_file.txt"
По умолчанию, find
выполняет поиск в текущем каталоге и во всех вложенных каталогах. Ограничить «глубину» вложенных директорий можно так:
find / -maxdepth 2 -name passwd
или так:
find / -mindepth 2 -maxdepth 4 -name passwd
Получить md5sum найденных файлов можно с помощью такой конструкции:
find -iname "Test_file.txt" -exec md5sum {} \;
Инверсия поиска по имени файла выглядит так:
find -not -iname "Test_file.txt"
Вывод всех файлов, в которых в правах доступа установлен бит чтения для группы:
find . -perm -g=r -type f -exec ls -l {} \;
Вывод файлов, в которых в правах доступа установлен ТОЛЬКО бит чтения для группы:
find . -perm g=r -type f -exec ls -l {} \;
Тот же пример, но для использования восьмеричной системы счисления:
find . -perm 040 -type f -exec ls -l {} \;
Найти файлы и изменить права доступа с 777 на 644:
find / -type f -perm 0777 -print -exec chmod 644 {} \;
Найти каталоги и изменить права доступа с 777 на 755:
find / -type d -perm 777 -print -exec chmod 755 {} \;
Найти файлы, принадлежащие определенному пользователю:
find / -user admin
Найти файлы, принадлежащие определенной группе:
find / -group dev
Поиск всех пустых файлов:
find ~ -empty
Поиск всех пустых файлов, кроме скрытых (с точкой в начале имени):
find ~ -empty -not -name ".*"
Вывод пяти найденных файлов наибольшего размера:
find . -type f -exec ls -s {} \; | sort -n -r | head -5
Вывод пяти найденных файлов наименьшего размера (без пустых файлов):
find . -not -empty -type f -exec ls -s {} \; | sort -n | head -5
Поиск по типам файлов. Найти файлы-сокеты:
find . -type s
Найти каталоги:
find . -type d
Найти обычные файлы:
find . -type f
Найти и вывести файлы, которые были созданы ПОСЛЕ указанного:
find -newer "Test_file.txt"
Найти файлы больше указанного размера:
find ~ -size +500M
Найти файлы меньше указанного размера:
find ~ -size -500M
Найти файлы точно соответствующие указанному размеру:
find ~ -size 500M
Найти и удалить zip
-архивы, занимающие больше 100М:
find / -type f -name *.zip -size +100M -exec rm -i {} \;
Найти и удалить zip
-архивы старше 7 дней:
find / -type f -name *.zip -mtime +6 -delete
Найти файлы, содержимое которых было изменено в течении последнего часа:
find . -mmin -60
Найти файлы, содержимое которых было изменено за последние сутки:
find . -mtime -1
Найти и заменить пробелы подчеркиваниями в именах файлов:
find . -type f -iname "*.mp3" -exec rename "s/ /_/g" {} \;
Найти недавно измененные файлы, отсортированные в обратном порядке (файл, измененный последним, будет первым):
find / -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r