Можливо, вам захочеться ланцюжкові дзвінки, щоб знайти (колись ви дізналися, що це можливо, що може бути сьогодні). Це, звичайно, можливо лише до тих пір, поки ви залишаєтеся в пошуку. Після того, як ви перейдете до xargs, це буде поза межами сфери.
Невеликий приклад, два файли a.lst і b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
Тут немає жодної хитрості - просто той факт, що обидва містять "фуддел", а лише один містить "фідель".
Припустимо, ми цього не знали. Ми шукаємо файл, який відповідає 2 умовам:
find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097 4 -rw-r--r-- 1 stefan stefan 20 Jun 27 17:05 ./a.lst
Ну, можливо, ви знаєте, що синтаксис grep чи інша програма передають обидва рядки як умову, але це не в цьому суть. Тут можна використовувати будь-яку програму, яка може повернути істинне чи помилкове, якщо файл є аргументом - grep був просто популярним прикладом.
І зауважте, ви можете слідувати find -exec з іншими командами знаходження, наприклад -ls або -delete або чимось подібним. Зауважте, що видалення робить не тільки rm (видаляє файли), але і rmdir (видаляє каталоги).
Такий ланцюг читається як комбінація команд AND, якщо інше не вказано (а саме з -or
перемикачем (і паронами (які потребують маскування)).
Таким чином, ви не залишаєте ланцюжок пошуку, що є зручною річчю. Я не бачу жодної переваги у використанні -xargs, оскільки вам потрібно бути обережними при передачі файлів, що щось не потрібно робити - це автоматично обробляє передачу кожного файлу як єдиний аргумент для вас.
Якщо ви вважаєте, що вам потрібно замаскувати знахідки {} брекетів , не соромтесь відвідати моє запитання, яке вимагає підтвердження. Моє твердження: Ви цього не робите.
find
. Дуже дякую!