Що +
в find /path/ -exec command '{}' +
справах? на відміну відfind /path/ -exec command '{}' \;
Що +
в find /path/ -exec command '{}' +
справах? на відміну відfind /path/ -exec command '{}' \;
Відповіді:
'+' Робить один великий командний рядок з усіх знайдених файлів, щоб мінімізувати кількість команд, які потрібно виконати.
Враховуючи випадок, що команда find знаходить чотири файли.
find . -type f -exec command '{}' \;
буде виробляти
command file1
command file2
command file3
command file4
З іншої сторони
find . -type f -exec command '{}' \+
виробляє
command file1 file2 file3 file4
На чоловіковій сторінці:
команда -exec {} +
Цей варіант дії -exec виконує вказану команду для вибраних файлів, але командний рядок будується додаванням кожного вибраного імені файлу в кінці; загальна кількість викликів команди буде значно меншою, ніж кількість відповідних файлів. Командний рядок побудований приблизно так само, як xargs будує свої командні рядки. У команді дозволений лише один екземпляр `{}. Команда виконується в початковому каталозі.
find
дає мені півмісяця.
xargs
,-exec … {} +
робить те ж саме-print | xargs …
, але без питань цитування (-print0 | xargs -0
це інший спосіб, але він менш портативний).