что делает эта команда? найти команду с опциями

Но вопрос, что делает эта команда? Я знаю команду find, но опций нет, например выражение в кавычках, а также -exec и ...

find /var -name "[0-9]*test[A-Z]" -exec  {} /root/{}';'
0
задан 31 May 2018 в 12:42

1 ответ

find /var инструктирует find начать поиск в каталоге /var.

-name "[0-9]*test[A-Z]" - это шаблон поиска, который дает команду find возвращать только те файлы / папки, которые соответствуют шаблону "[0-9]*test[A-Z]". Если вы не заключите в кавычки строку поиска, ваша оболочка расширит этот шаблон поиска и попытается выполнить результат. Цитируя шаблон поиска, вы передаете его в качестве аргумента find /var -name.

Часть -exec... исходного вопроса имеет синтаксическую ошибку, и она должна быть -exec {} /root/{} ';' (обратите внимание на пробел перед ';', как прокомментированы десерт и маргаритка).
Он инструктирует find выполнить следующие аргументы, где {} заменяется результатом поиска find. Обычно вы также должны заключать их в кавычки, чтобы предотвратить расширение оболочки.

Наконец, ';' определяет, как секция -exec должна обрабатывать результаты поиска при выполнении команды. ';' дает команду find выполнить команду -exec для каждого результата поиска. При использовании '+' вместо этого запускается команда -exec со всеми результатами поиска. Это также должно быть заключено в кавычки или экранировано, чтобы предотвратить расширение оболочки и аргумент find...-exec.

Небольшой пример, который иллюстрирует разницу между ";" и "+", выглядит следующим образом.

[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" ";"
./12ltestA
./1ltestA
[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" "+"
./12ltestA ./1ltestA
0
ответ дан 31 May 2018 в 12:42

Другие вопросы по тегам:

Похожие вопросы: