Поиск файлов
Команда find ищет файлы по указанным критериям. Формат команды:
find опции места_поиска критерии модификаторы
Здесь места_поиска — каталоги, начиная с которых будет осуществлен по- иск. Поиск также производится и в подкаталогах, указанных в качестве мест поиска каталогов. По умолчанию имена найденных файлов печатаются на экране. Критериями поиска могут быть любые атрибуты файла, например, имя файла, его размер, владелец файла, тип, даты доступа, модификации и пр. Однако команда find не обеспечивает поиска файла по содержимому.
В командной строке find после тире указывают не только опции, но и крите- рии поиска, а также так называемые модификаторы. Критерии поиска ука- зывают, что искать, а модификаторы и опции — как искать и выводить най- денную информацию.
Наиболее часто используют следующие критерии:
r -name — поиск по имени файла или файловому шаблону;
r -iname — то же с игнорированием регистра;
r -type — поиск по типу файла;
r -size — для поиска по размеру или диапазону возможных размеров;
r -empty — поиск пустых файлов;
r -mtime — по дате модификации;
r -perm — поиск по правам доступа;
r -user и -group — по принадлежности файла.
Например, в текущем каталоге требуется найти все файлы, имя которых начинается со строки d1. Соответствующая команда поиска приведена в при- мере 4.17.
Пример 4.17. Поиск по имени файла |
$ find . -name "d1*"
./d1
Обратите внимание, что если критерий поиска по подстроке в имени файла использует шаблоны подстановки, то такой шаблон должен быть экраниро- ван кавычками. В противном случае до исполнения команды оболочка за- менит шаблоны подходящими именами файлов, и команда будет работать неверно.
Можно ужесточить критерий поиска, потребовав от предыдущей команды отыскивать только каталоги с заданным именем (пример 4.18).
Пример 4.18. Поиск только каталогов по заданному имени |
$ find . -name "d1*" -type d -ls
12042 0 drwxr-xr-x 2 user1 user1 192 Окт 7 21:58 ./d1
Более того, в последнем примере использован модификатор –ls команды find, позволяющий отображать информацию о найденных файлах в подроб- ном формате.
Если критерии поиска необходимо объединить по логическому условию ИЛИ, то следует использовать -o (пример 4.19).
Пример 4.19. Поиск по критериям, объединенным условием ИЛИ |
$ find . -name "d1*" -o -empty
./d1
./d1/s
./d1/f1
./d1/f2
В этом примере продемонстрирован поиск по двум критериям, объединен- ным условием ИЛИ. Первый критерий — поиск файлов, начинающихся со строки d1, а второй — поиск пустых файлов (условие поиска -empty).
Для поиска файлов определенного типа необходимо задавать критерий
-type тип, где тип один из:
r b — файл блочного устройства;
r c — файл символьного устройства;
r d — каталог;
r f — обычный файл;
r p — именованный канал;
r s — сокет;
r l — символическая ссылка.
Имеется возможность исполнять команды с найденными find файлами. Для этого необходимо использовать модификатор –exec (пример 4.20).
Пример 4.20. Выполнение команд над найденными файлами |
$find . -name "*core*" -exec rm –f {} \;
В примере 4.20 производится поиск и удаление всех файлов, имена которых содержат в себе строку "core". Смысл конструкции {} \; состоит в следую- щем: фигурные скобки будут заменены именами найденных файлов, которые и станут аргументами исполняемых команд. С помощью экранированной точки с запятой \; команду find информируют о том, где заканчивается команда, указанная после -exec.
Дата добавления: 2015-06-12; просмотров: 673;