Відповіді:
xargs будує та виконує командні рядки зі стандартного вводу .
Синтаксис простий:
ls | grep feeback | xargs open
Це не працюватиме, якщо ім'я файлу містить пробіл. Наприклад, для файлу під назвою foo bar:
ls | grep foo | xargs open
Вищезазначене намагатиметься відкрити файл, який називається, fooа потім файл, який називається bar, оскільки пробіл зазвичай розділяє аргументи.
У цьому випадку ви можете використовувати лапки для розмежування імені файлу:
ls | grep foo | xargs -I '{}' open '{}'
Однак такий підхід може не вдатися, якщо ім'я файлу містить пробіли.
Іншим варіантом може бути використання find , яка взагалі уникає труб:
find -maxdepth 1 -name '*foo*' -exec open '{}' \;
Тут -maxdepth 1робиться пошук пошуку лише в поточному каталозі (тобто, не включаючи підкаталоги), здійснює -name '*foo*'пошук файлів, що містять рядок foo у своєму імені, та -exec open {} \;замінюючи {}знайдене ім'я файлу. find автоматично розібрається зі спеціальними символами.
За допомогою заміни команд можна досягти подібного результату:
open "$(ls | grep feedback)"
Це буде працювати, навіть якщо файл містить пробіли.
open *feedback*Насправді цього не вистачить?