Параметры -name
и -exec
показывает, что "шаблон имени файла или каталога для поиска" и "выполняет что-то на каждом из подобранных получающихся файлов или каталогов". {}
заменен результаты, соответствующие -name
шаблон, так, чтобы -exec
оператор может использовать их в качестве аргументов выполняемым командам. Наклонная черта влево \;
показывает конец команды находки. Двойные тире --
обычно средства долгие опции, например. ls --all
и единственный тире -
средства короткая опция, например. ls -a
. Они оба имеют в виду точно то же.
Это швы, чтобы хорошо работать, если Вы удаляете "строку 1 и 2 при получении аргументов:
IN_REGEX=$1
OUT_REGEX=$2
find . -name '*'.cpp | grep $IN_REGEX | grep -v $OUT_REGEX
Можно использовать !
(инвертируйте) и -path
командные коммутаторы find
выполнять это
$ find . \( ! -path "*bar*" -a ! -path "*bar2\/bar3*" -a -path "*foo*" -print \)
Это будет искать в папках, исключая bar
, bar2/bar3
, и включая папки с foo
в пути. Дайте этому попытку. Синтаксис мог бы измениться с различными версиями find
команда.
Относитесь находят страницу справочника для получения дополнительной информации.
$IN_REGEX
и$OUT_REGEX
хотя (и--
отметить конец опций или использовать-e
опция к grep). Вы могли бы хотеть-E
опция, таким образом, можно заменить Ваш\|
(который между прочим не является стандартным) с|
(который является стандартным). – Stéphane Chazelas 01.03.2013, 17:18