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
$ find ~ -size -300b
$ find / -size 42
$ find ~ -empty