Я хочу точно знати , що {} \;
і {} \+
та | xargs ...
робити. Будь ласка, уточнюйте їх за допомогою пояснень.
Нижче 3 команд виконуються та видають один і той же результат, але перша команда займає небагато часу, а формат також трохи відрізняється.
find . -type f -exec file {} \;
find . -type f -exec file {} \+
find . -type f | xargs file
Це тому, що 1-й запускає file
команду для кожного файлу, що надходить із find
команди. Отже, в основному це працює так:
file file1.txt
file file2.txt
Але останні 2 знаходять за допомогою -exec
команд запустити команду файлу один раз для всіх файлів, як показано нижче:
file file1.txt file2.txt
Потім я запускаю наступні команди, за якими перша працює без проблем, а друга дає повідомлення про помилку.
find . -type f -iname '*.cpp' -exec mv {} ./test/ \;
find . -type f -iname '*.cpp' -exec mv {} ./test/ \+ #gives error:find: missing argument to `-exec'
Для команди з {} \+
, він дає мені повідомлення про помилку
find: missing argument to `-exec'
чому так? хтось, будь ласка, пояснить, що я роблю неправильно?