Может кто-нибудь объяснить, почему при попытке запустить командный сценарий ex для нескольких файлов это работает:
for x in `ls *`;do ex $x <excmds;done;
но это не так:
ls *|xargs -i ex {} <excmds
Первый будет выполнять ex и запускать команды в «excmds» для каждого файла. Второй, я не уверен, что он делает, но он не изменяет никаких файлов. Я предполагаю, что перенаправление является проблемой и не действует при каждом выполнении xargs? Есть ли способ сделать это с помощью xargs? (еще один вопрос, который я поднял на xargs - может быть, мне следует прекратить его использовать :()
xargs
будет считывать ввод изexcmds
вместо выводаls
. - person Joachim Sauer   schedule 02.03.2011xargs
не подходит для этой работы, так как вы хотите выполнить некоторую команду ровно один раз для каждого файла.xargs
полезен для выполнения команд, которые могут обрабатывать несколько входных данных одновременно. - person Joachim Sauer   schedule 02.03.2011xargs
, запустите его с опцией-t
. Также я подозреваю, чтоls *
- правильный инструмент (попробуйте его в папке с подпапками!) - person Jakob Kroeker   schedule 13.06.2014ls y*|xargs -i -t ex {} \<excmds
ex ya <excmds
он просто зависает! Предположим, вы имели в виду, что ls не является правильным инструментом - person Joe Watkins   schedule 16.07.2014