Подборка примеров использование команды поиска find под Linux.
Синтаксис команды
find [путь] [опции] [критерии поиска] [действия над файлами]
| команда | описание |
|---|---|
| find ~/ -name ".bash*" | поиск в домашнем каталоге файлов, имя которых начинается с .bash; ключ -iname - без учета регистра |
| find ~/ -executable | поиск выполняемых файлов для пользователя, который запустил команду find |
| find ~/ -perm 644 | поиск файлов, у которых права равны 644 |
| find ~/ -perm -644 | поиск файлов, у которых права установлены в 644 и больше (744, 777, etc.) |
| find ~/ -group proft | поиск файлов/папок, принадлежащих группе proft |
| find ~/ -mmin n | поиск файлов/папок, которые редактировались ровно n минут назад |
| find ~/ -mmin -10 | поиск файлов/папок, которые редактировались меньше 10 минут назад |
| find ~/ -mtime n | поиск файлов/папок, которые редактировались ровно n дней назад |
| find ~/ -mtime -7 | поиск файлов/папок, которые редактировались меньше 7 дней назад |
| find ~/ -mtime +7 | поиск файлов/папок, которые не редактировались последние 7 дней |
| find ~/ -newer file | поиск файлов с датой модификации больше чем у file |
| find ~/ -nogroup | поиск файлов/папок у которых не назначена группа |
| find ~/ -size +2G | поиск файлов, размер которых больше 2 ГБайт; -2G меньше 2 ГБайт; возможные размерности: G - ГБайт, M - МБайт, K - КБайт |
| find ~/ -type t | поиск объектов с типом t, распространенные типы: f - файл, d - директория |
| find . -empty | поиск пустых файлов и директорий |
| find ~/ -user nata -exec mv {} ~/temp \; | поиск файлов, принадлежащих пользователю nata и перемещение их в директорию ~/temp (предполагается, что команда запущена не под пользователем nata) |
| find . -name "*.pyc" -exec rm {} \; | удаление файлов *.pyc в текущей и вложенных директориях |
| find . -name "*.pyc" -ok rm {} \; | удаление файлов *.pyc с подтверждением, Enter - пропуск текущего файла |
| find ~/ -maxdepth 2 -name ".bash*" | ограничить поиск двумя уровнями вглубь от ~/ |
| find ~/projects/ -name "*.py" | xargs grep -l 'TODO' | поиск файлов *.py, которые содержать строку TODO |
| find ~/ -size +600M -and -size -1G | поиск файлов, у которых размер больше 600 МБайт и меньше 1 ГБайт |
| find . -type f -not -name "*.html" -not -name "*.css" | поиск файлов, исключая *.html и *.css |
| find -L . -type l | поиск поломанных симлинков в текущей директории и ниже |
| find . -printf "%f\n" | поиск всех файлов и вывод только их имя, без полного пути |
| find . -regex 'index[1-5].html' | поиск с использованием регулярных выражений |
| find . -name "*.py" | xargs sed -i 's/foo/bar/g' | поиск по всем *.py и замена foo на bar |
| find . -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort | сортировка файлов по дате, начиная с текущей директории |
| diff -y <(ssh user@host find /boot|sort) <(find /boot|sort) | сравнение удаленной папки с текущей |
| ls *.pdf | xargs -I{} pdftotext {} - | grep "foo" | поиск "foo" во всех pdf файлах |
| find ./ -name '*:*' -exec rename 's/:/_/g' {} + | найти все файлы с : в имени и заменить на _ |
| sudo find /etc/ -type f -print | wc -l | подсчитать количество файлов в директории /etc |
И напоследок мастер для составления параметров для команды find - Unix find command helper
Дополнительное чтиво