Введение
Вы когда-нибудь задумывались, как найти в каталоге файлы, к которым не прикасались целую вечность? Независимо от того, очищаете ли вы старые файлы, архивируете данные или проверяете устаревшие файлы, команда find в Linux — идеальное решение. В этом совете мы покажем вам, как вывести список файлов по их возрасту в Linux с помощью простой, но мощной команды.
Команда
find /path/to/files -type f -name '*.jpg' -mtime +30 -exec ls -l {} \;
Эта команда позволяет находить файлы по дате их последнего изменения, фильтровать их по типу или имени и отображать подробную информацию о них.
Разбор команды
1. /path/to/files
Здесь указывается каталог для поиска. Замените его фактическим путём к папке, которую вы хотите просмотреть.
- Пример: если вы хотите выполнить поиск в своей библиотеке фотографий, используйте
~/Pictures.
2. -type f
Параметр -type указывает тип элементов для поиска.
f: означает только файлы (каталоги игнорируются).
3. -name '*.jpg'
Здесь результаты фильтруются по именам файлов или расширениям.
- Пример:
*.jpgнаходит файлы, оканчивающиеся на.jpg. - Вы можете заменить его другими шаблонами, например
*.txtдля текстовых файлов или*.logдля файлов журналов.
4. -mtime +30
Это ключ к фильтрации файлов по их возрасту.
+30: находит файлы, последние изменения в которых были внесены более 30 дней назад.- Замените
30на любое число в соответствии с вашими потребностями:- 1 год: используйте
-mtime +365. - 1 неделя: используйте
-mtime +7.
- 1 год: используйте
5. -exec ls -l {} \;
Здесь Linux указывается, что делать с найденными файлами.
-exec: выполняет команду для каждого файла.ls -l: выводит подробную информацию о каждом файле (например, размер, разрешения, владельца и дату последнего изменения).{}: заполнитель для каждого найденного файла.\;: обозначает конец команды.
Совет профессионала
Хотите проверить команду, не запуская ls -l? Опустите часть -exec:
find /path/to/files -type f -name '*.jpg' -mtime +30
При этом будут просто перечислены пути к файлам без дополнительных сведений.
Зачем использовать эту команду?
Команда find невероятно универсальна и полезна для задач обслуживания системы:
- Освобождение места на диске: поиск и удаление старых файлов.
- Архивирование старых данных: перемещение файлов, к которым не прикасались месяцами или годами, в резервное хранилище.
- Отслеживание устаревших файлов: проверка критически важных каталогов на наличие устаревших файлов.
Практические примеры
Пример 1: поиск старых документов
Найдите .docx файлы в вашей папке Documents, которые не изменялись более 90 дней:
find ~/Documents -type f -name '*.docx' -mtime +90 -exec ls -l {} \;
Пример 2: поиск больших файлов старше 6 месяцев
Найдите файлы размером более 100 МБ в /home/user, которые не изменялись более 6 месяцев:
find /home/user -type f -size +100M -mtime +180 -exec ls -lh {} \;
-size +100M: фильтрует файлы размером более 100 МБ.ls -lh: отображает размеры файлов в удобочитаемом формате (например, МБ, ГБ).
Пример 3: поиск старых PDF-файлов
Найдите .pdf файлы в /home/user/Downloads, которые не изменялись в течение последнего года:
find ~/Downloads -type f -name '*.pdf' -mtime +365 -exec ls -l {} \;
Пример 4: поиск недавно изменённых файлов
Найдите .txt файлы, изменённые за последние 7 дней, в /var/www:
find /var/www -type f -name '*.txt' -mtime -7 -exec ls -l {} \;
-mtime -7: находит файлы, изменённые за последние 7 дней.
Пример 5: удаление старых временных файлов
Удалите файлы в /tmp, которые не изменялись более 30 дней:
find /tmp -type f -mtime +30 -exec rm {} \;
rm: удаляет файлы.- Предупреждение: используйте с осторожностью, так как файлы удаляются безвозвратно.
Пример 6: архивирование старых медиафайлов
Переместите .mp4 файлы старше 60 дней из ~/Videos в папку архива:
find ~/Videos -type f -name '*.mp4' -mtime +60 -exec mv {} ~/Archives/ \;
mv: перемещает файлы в указанную папку.
Пример 7: поиск файлов, созданных в определённом диапазоне времени
Найдите .log файлы, созданные от 30 до 60 дней назад, в /var/log:
find /var/log -type f -name '*.log' -mtime +30 -mtime -60 -exec ls -l {} \;
-mtime +30: файлы старше 30 дней.-mtime -60: файлы, изменённые за последние 60 дней.
Пример 8: поиск пустых файлов старше 1 недели
Найдите пустые файлы в /home/user, которые не изменялись на прошлой неделе:
find /home/user -type f -empty -mtime +7 -exec ls -l {} \;
-empty: фильтрует файлы нулевого размера.
Пример 9: поиск файлов по времени доступа
Найдите .png файлы в /var/www/html, к которым не обращались в течение последних 90 дней:
find /var/www/html -type f -name '*.png' -atime +90 -exec ls -l {} \;
-atime: фильтрует файлы по времени доступа, а не по времени изменения.
Пример 10: поиск недавно созданных файлов
Найдите файлы в /home/user, созданные за последние 3 дня:
find /home/user -type f -ctime -3 -exec ls -l {} \;
-ctime: фильтрует файлы по времени создания.
Пример 11: поиск файлов по разрешениям
Найдите файлы в /etc с определёнными разрешениями (например, доступные для записи другим пользователям):
find /etc -type f -perm /o+w -exec ls -l {} \;
-perm /o+w: находит файлы, доступные для записи другим пользователям.
Пример 12: поиск файлов, изменённых за последний час
Найдите файлы, изменённые за последний час, в /home/user/Documents:
find ~/Documents -type f -mmin -60 -exec ls -l {} \;
-mmin -60: фильтрует файлы, изменённые за последние 60 минут.
Пример 13: поиск файлов с определённым владельцем
Найдите файлы, принадлежащие пользователю jose в /var/log, которые не изменялись более 90 дней:
find /var/log -type f -user jose -mtime +90 -exec ls -l {} \;
-user jose: фильтрует файлы, принадлежащие указанному пользователю.
Пример 14: исключение определённых каталогов
Найдите .jpg файлы в /home/user старше 30 дней, за исключением папки Downloads:
find /home/user -type f -name '*.jpg' -mtime +30 -not -path "~/Downloads/*" -exec ls -l {} \;
-not -path: исключает файлы в указанном каталоге.
Пример 15: поиск файлов, изменённых в определённую дату
Найдите файлы, изменённые ровно 10 дней назад, в /home/user:
find /home/user -type f -mtime 10 -exec ls -l {} \;
-mtime 10: находит файлы, изменённые ровно 10 дней назад.
Пример 16: поиск файлов с определёнными расширениями
Найдите .zip и .tar.gz файлы старше 60 дней в /backups:
find /backups -type f \( -name '*.zip' -o -name '*.tar.gz' \) -mtime +60 -exec ls -l {} \;
\( -name '*.zip' -o -name '*.tar.gz' \): выполняет поиск по нескольким расширениям файлов.
Заключение
Команда find в Linux — это мощный инструмент для управления файлами по их возрасту, типу и имени. Независимо от того, освобождаете ли вы место на диске, архивируете старые данные или отслеживаете устаревшие файлы, эта команда даёт вам полный контроль над вашими каталогами.
Попробуйте её сегодня и поднимите свои навыки работы с Linux на новый уровень!