Я думаю, що це загальні способи передачі результату однієї команди до наступної, як вхідних даних.
Як працюють ці троє? Або які веб-сайти / URL-адреси?
Я думаю, що це загальні способи передачі результату однієї команди до наступної, як вхідних даних.
Як працюють ці троє? Або які веб-сайти / URL-адреси?
Відповіді:
Перші речі:
man find
man xargs
У find
команда виводить результати в стандартний висновок за замовчуванням, так що -print
варіант , як правило , не потрібно, але -print0
розділяє імена файлів з 0 (NULL) байт , так що імена , що містять пробіли або символи нового рядка можуть бути правильно інтерпретовані.
-exec
Варіант , що ви можете використовувати замість xargs - команда знахідки виконує команду для кожного елемента , він знаходить.
xargs
Команда зчитує космос або новий рядок розділених рядків ( як правило , з знаходять команди, але вони могли прийти звідки завгодно) і виконує деякі команди для кожного рядка.
Якщо xargs запускається з опцією -0 , очікується, що рядки, розділені NULL, будуть виведеніfind ... -print0
Перевага xargs полягає в тому, що він може групувати рядки разом, так що він виконує команду лише один або два рази замість n разів.
Отже, при звичайному використанні:
find start_directory -name '*.txt' | xargs ls -l
find вказав би імена файлів, а xargs видав би команди, такі як:
ls -l file1.txt file2.txt file3.txt ... fileN.txt
що швидше, ніж отримання команди пошуку:
ls -l file1.txt
ls -l file2.txt
ls -l file3.txt
ls -l ...
ls -l fileN.txt
Зауважте, що xargs більше не потрібен для поточних реалізацій пошуку, які, ймовірно, всі підтримують цей синтаксис POSIX:
find directory -name '*.txt' -exec ls -l {} +
що простіше і трохи швидше, ніж варіант xargs.
find directory -name '*.txt' | xargs ls -l
Дивіться наступні статті:
Linux та Unix знаходять навчальний посібник з прикладами
xargs: Як контролювати та використовувати аргументи командного рядка