MyTetra Share
Делитесь знаниями!
Синтаксис команды find
Время создания: 04.06.2009 16:52
Текстовые метки: linux, bash, sh, find, синтаксис, команда
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/0000000974/text.html на raw.github.com

Команда find используется для нахождения файлов и каталогов.


Классическое использование - это поиск по имени файла. Обратите внимание, что между параметром -name и значением "*page*" знак равно "=" не ставится!


find . -name "*page*"


где


  • . - каталог, откуда начинать поиск
  • * - любой набор символов
  • ? - любой символ


Поиск по умолчанию идёт регистрозависимый. Чтоб находить файлы безразлично к регистру символов, нужно искать с опцией -iname.


Каталогов, откуда начинать поиск, может быть несколько. В этом случае поиск будет вестись в нескольких каталогах. То есть, вполне допустима следующая команда:



find ~/work/develop/bash ~/work/develop/cpp -type f



Дополнительные опции


Поиск по типу осуществляется опцией -type X, возможные значения X:

  • f - обычный файл
  • d - каталог
  • l - символьная ссылка


Логические операции соединения условий


Если условия идут друг за другом, то такие условия считаются объединеннми логическим AND. Для объединения AND так же предусмотрены опции -a и -and. Следующие команды эквивалентны:



find . expr1 expr2
find . expr1 -a expr2
find . expr1 -and expr2 (этот вариант POSIX-несовместим)


Для объединения условий операцией OR, используются опции -o или -or:



find . expr1 -o expr2
find . expr1 -or expr2 (этот вариант POSIX-несовместим)



Логическое отрицание делается опциями ! или -not:



find . ! expr1
find . -not expr1 (этот вариант POSIX-несовместим)



Выполнение команд над найденными файлами


Выполнение команд над найденными файлами производится с помощью опции -exec:



find . -iname "*.php" -exec iconv -f CP1251 -t UTF-8 -o tmpfile {} \; -exec mv tmpfile {} \;



В этой команде имя найденного файла подставляется вместо символов {}. Завершение команды обязательно должно производиться символами \;. Как видно из данного примера, можно писать несколько команд, каждая в своей опции -exec.


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования