-exec
команда ;
Выполнить команду ; true, если возвращается 0 статус. Все последующие аргументы для поиска принимаются в качестве аргументов команды, пока не ;
встретится аргумент, состоящий из . Строка {}
заменяется на текущее имя файла, обрабатываемое везде, где оно встречается в аргументах команды, а не только в аргументах, где оно одиночно, как в некоторых версиях find
. Обе эти конструкции, возможно, должны быть экранированы (с помощью \
) или заключены в кавычки, чтобы защитить их от расширения оболочкой. В разделе ПРИМЕРЫ приведены примеры использования -exec
опции. Указанная
командазапускается один раз для каждого соответствующего файла. Команда выполняется в начальном каталоге. Существуют неизбежные проблемы безопасности, связанные с использованием -exec
действия; Вы должны использовать -execdir
опцию вместо этого.
-exec
команда {}
+
Этот вариант -exec
действия запускает указанный команду для выбранных файлов, но командная строка создается путем добавления каждого выбранного имени файла в конце; общее количество вызовов команды будет намного меньше, чем количество совпавших файлов. Командная строка строится во многом так же, как и xargs
ее командные строки. В {}
команде допускается только один экземпляр . Команда выполняется в начальном каталоге. Если find
возникает ошибка, это может иногда вызывать немедленный выход, поэтому некоторые ожидающие команды могут вообще не выполняться. Этот вариант -exec
всегда возвращает истину.
-execdir
команда ;
-execdir
команда {}
+
Как ; в противном случае злоумышленник может выполнить любые команды, которые ему нравятся, оставив файл с соответствующим именем в каталоге, в котором вы будете работать . То же самое относится к наличию записей, в которых они пусты или не являются абсолютными именами каталогов. Если возникает ошибка, это может иногда вызывать немедленный выход, поэтому некоторые ожидающие команды могут вообще не выполняться. Результат действия зависит от того, используется или вариант;
Команда всегда возвращает истину, а команда возвращает истину, только если команда возвращает 0.-exec
, но указанная команда запускается из подкаталога, содержащего соответствующий файл, который обычно не является каталогом, в котором вы начали поиск. Это гораздо более безопасный метод для вызова команд, поскольку он позволяет избежать условий гонки во время разрешения путей к соответствующим файлам. Как и в случае с -exec
действием,
+
форма -execdir
создаст командную строку для обработки более одного сопоставленного файла, но при любом вызове команды будут перечислены только файлы, которые существуют в одном и том же подкаталоге. Если вы используете эту опцию, вы должны убедиться, что ваша $PATH
переменная среды не ссылается.
-execdir
$PATH
find
+
;
-execdir
{}
+
-execdir
{}
;
-I
заменить-Обл
Заменить вхождения replace-str в исходных аргументах именами, считанными из стандартного ввода. Кроме того, пробелы без кавычек не заканчивают элементы ввода; вместо этого разделителем является символ перевода строки. Подразумевается -x
и -L
1
.
-i
[ replace-str ], --replace
[ =
replace-str ]
Эта опция является синонимом для -I
replace-str, если указан replace-str . Если аргумент replace-str отсутствует, эффект такой же, как и -I{}
. Эта опция устарела; используйте -I
вместо этого.
{
список;
}
Список просто выполняется в текущей среде оболочки. список должен заканчиваться символом новой строки или точкой с запятой. Это называется групповой командой. Статус возврата - это статус выхода из списка. Обратите внимание, что в отличие от метасимволов ( и ) , { и } являются зарезервированными словами и должны встречаться там, где зарезервированное слово разрешено распознавать. Поскольку они не вызывают разрыв слова, они должны быть отделены от списка пробелом или другим метасимволом оболочки.
{}
- то естьtargets
действовать, с помощьюfind
команды это удалить /rm
найти файлы.