Я пытаюсь открыть большой список файлов .xml с помощью следующей команды:

ls | grep navigation-drawer-config- | open

Тем не менее, это не работает. Насколько я понимаю, это должно передавать то, что grep находит в каталоге, соответствующем этому шаблону имени, в open, а open должен открывать файлы. Я могу открыть их вручную, делая что-то вроде этого:

open file1 file2

Однако, когда я использую первую команду, я возвращаюсь на экран справки для команды open. Вы не можете совместить grep с open? Или я что-то упускаю?

2 ответа2

1

Проблема в том, что вы не добавляете имена файлов в команду open, скорее вы вводите вывод команды grep в команду open.

Есть несколько способов сделать это, в том числе

open navigation-drawer-config-*

Который будет использовать расширение GLOB и, вероятно, самый быстрый и простой подход.

Или же

open `ls | grep "navigation-drawer-config-"`

Который выполняет ls и grep, а затем помещает вывод в качестве параметров для команды open.

Или же

find . -name "navigation-drawer-config-*" -exec open {} +

Который будет искать в текущем каталоге И ВСЕХ ПОДРАЗДЕЛЕНИЯХ файл, начинающийся с navigation-box-config-, и "открывать" их.

0

Если вы работаете в UNIX или в большинстве Unix-подобных операционных систем (Linux, BSD, Mac OS), вы можете использовать xargs который используется для создания аргументов канала для строки, которая не использует pipe | ; так что для вашего примера

ls | grep navigation-drawer-config- | xargs open

Для информации, первый аргумент xargs - это (в примере) open для которого он будет предоставлять результат grep из своего стандартного ввода в качестве аргументов командной строки и создаст "exec" open navigation-box-config ».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .