Find - приемы поиска

Найти недавно модифицированные файлы

Зачастую требуется найти файлы, которые были модифицированы/созданы недавно, или за какой-либо промежуток времени.
Чтобы найти недавно модифицированные файлы, отсортированные в обратном порядке (то есть файл, измененный последним, будет показан первым), используется команда вида:

$ find /etc -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r

Вышеприведенная команда сортирует файлы в /etc (и поддиректориях) в обратном порядке по времени их изменения, и выводит отсортированный список вместе с их расположением в файловой системе и временем последнего изменения. Если вы также хотите проверить директории, опустите опцию “-type f”.

Поиск файлов, которые были модифицированы в последние полчаса в директории /target и во всех ее поддиректориях:

$ find /target -type f -mmin -30

Поиск файлов, которые были модифицированы в последние 3 дня:

$ find /target -type f -mtime -3

Поиск файлов, которые были модифицированы в последние 3 дня глубиной до 4 уровня:

$ find /target -type f -mtime -3 -depth -4

Вы также можете задать диапазон времени модификации. Поиск файлов, которые были модифицированы в последние 5 дней, но не позднее чем 3 дня назад:

$ find /target_directory -type f -mtime -5 ! -mtime -3

Все эти команды выводят только путь к найденным файлам. Вы можете задать обработку этих найденных файлов с помощью опции “-exec”.

Вывод атрибутов файлов, измененных за последний час:

$ find /target -type f -mmin -60 -exec ls -al {} \;

В качестве альтернативы вы можете использовать для этого команду xargs:

$ find /target -type f -mmin -60 | xargs ls -l

Обратите внимание, что эти команды найдут также файлы, созданные в заданный промежуток времени.

Удаление файлов старше N-дней

Вариант 1 : _rm надо заменить на rm

find /somewhere -type f -mtime +7 -exec _rm  -f {} \;

В cron так:

44 23 * * * /usr/bin/find /data//backup/ -type f -mtime +14 -exec rm -f {} \;

Вариант 2:

find /somewhere -type f -mtime +7 -print0 | xargs -0 _rm -f

Поиск файлов по размеру

Чтобы найти файлы определенного размера, используйте опцию -size, указав после нее требуемый размер файла.  Размер файла может быть задан в трех различных формах: если перед ним указан знак плюс (+), ищутся все файлы, большие, чем указанный размер.
Если указан знак минус (-), ищутся все файлы, меньшие, чем указанный размер.
Если префикс не указан, ищутся файлы точно указанного размера.  Единица измерения - блок 512 байт; символ ‘k’ после размера указывает килобайты, символ ‘b’ - байты.

Примеры: - список файлов в каталоге /usr/local, размер которых больше 10000 килобайт:

$ find /usr/local -size +10000k
- список файлов в домашнем каталоге, размер которых меньше 300 байт:

$ find ~ -size -300b
- список файлов системы, размер которых составляет 42 блока по 512 байт:

$ find / -size 42
- поиск пустых файлов - т.е. файлов с размером 0 байт:

$ find ~ -empty