но вопрос что делает эта команда? Я знаю команду find но про опции нет,типа выражение в кавычках а также -exec и ...
find /var -name "[0-9]*test[A-Z]" -exec {} /root/{}';'
решение1
find /var
указывает find
начать поиск в каталоге /var
.
-name "[0-9]*test[A-Z]"
— это шаблон поиска, который указывает find
на возврат только файлов/папок, соответствующих шаблону "[0-9]*test[A-Z]"
. Если вы не заключите строку поиска в кавычки, ваша оболочка расширит этот шаблон поиска и попытается выполнить результат. Заключая шаблон поиска в кавычки, вы передаете его в качестве аргумента find /var -name
.
В -exec...
части исходного вопроса есть синтаксическая ошибка, и так и должно быть -exec {} /root/{} ';'
(обратите внимание на пробел перед ';'
комментарием dessert и daisy).
Он предписывает 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