У меня проблема с трубопроводом в Linux,
ls | grep feedback
У меня есть псевдоним для xdg-open, который открыт, как можно сделать, чтобы имя файла из grep перешло прямо в open
Это не работает
ls | grep feedback | open
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)"
Это будет работать, даже если файл содержит пробелы.