Як уже говорили інші члени, xargs - ваш друг. Це по-справжньому потужний інструмент, і я спробую пояснити це і запропонувати вирішення для загальної роботи.
Що робить xargs, це взяти рядок із введення та додати його до іншої команди, виконуючи цю іншу команду для кожного рядка вхідної інформації. Таким чином , шляхом введення locate foobar | xargs rm -f
, виведення команди локалізації буде виправлений на кінець цього rm -f
команди, і виконується для кожного рядка створюваного locate foobar
.
Гетьча:
Але що робити, якщо у ваших рядках (рядках) є пробіли, повернені locate? Це порушить rm -f
команду, оскільки аргументи, передані rm, повинні бути файлами (якщо ви не використовуєте перемикач -r), а шлях до файлу потрібно уникати або цитувати, якщо він містить пробіли.
xargs забезпечує перемикач -i, щоб замінити вхід в команду, яка наступна, а не просто додавати її. Тож я б змінив пропозицію на
locate foobar | xargs -ixxx rm -f 'xxx'
який тепер розіб'ється лише в тому випадку, якщо імена файлів, повернені за адресою, містять апострофи.
Мені доводиться погоджуватися з qbi, що ви повинні бути обережнішими щодо використання rm -f ! Використовуйте прапор -p для xargs, або просто запустіть foobar locate сам перед тим, як подавати його до xargs, або скиньте -f з rm.
locate foobar | xargs -p -ixxx rm -f 'xxx'
rm -i
Знайдіть fooBar``