Практические примеры использования find

Sep 8, 2016 20:54 · 479 words · 3 minute read find

Утилита 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
tweet Share