Що означає команда + in find / path / -exec '{}' + do?


Відповіді:


17

'+' Робить один великий командний рядок з усіх знайдених файлів, щоб мінімізувати кількість команд, які потрібно виконати.

Враховуючи випадок, що команда find знаходить чотири файли.

find . -type f -exec command '{}' \;

буде виробляти

command file1
command file2
command file3
command file4 

З іншої сторони

find . -type f -exec command '{}' \+

виробляє

command file1 file2 file3 file4

3
Якщо ви знаєте xargs, -exec … {} +робить те ж саме -print | xargs …, але без питань цитування ( -print0 | xargs -0це інший спосіб, але він менш портативний).
Жил "ТАК - перестань бути злим"

4

На чоловіковій сторінці:

команда -exec {} +

Цей варіант дії -exec виконує вказану команду для вибраних файлів, але командний рядок будується додаванням кожного вибраного імені файлу в кінці; загальна кількість викликів команди буде значно меншою, ніж кількість відповідних файлів. Командний рядок побудований приблизно так само, як xargs будує свої командні рядки. У команді дозволений лише один екземпляр `{}. Команда виконується в початковому каталозі.


1
людина, це дуже ... лаконічно? Я вважаю, що це не вистачає глибини та ясності.
ксенотеррацид

Ідея полягає не в тому, щоб сліпо породити один процес для кожного файлу, а зібрати файли файлів разом і викликати команду менше разів. Приклад: замість створення 3 різних процесів "rm FILENAME" він збирає назви файлів і робить "rm FILE1 FILE2 FILE3".
tante

У деяких версіях xargs у IIRC є можливість об'єднати ці імена до визначеного ліміту, тому ви можете скористатися цим, але також уникнути переповнення, якщо у вас є також великий список.
Кевін Канту

(Знайдіть, сама по собі є страшна маленька мова!)
Кевін Канту

findдає мені півмісяця.
Метт Олександр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.