2013-09-18 3 views
1

Вот чего я пытаюсь достичь. Я хочу, чтобы запустить последовательность команд на этот файл, так, напримерКак сгруппировать команду bash в одну функцию?

ls * | xargs (cat - | calculateforfile) 

Я хочу запустить (cat | calculateforthisfile) по каждому из файла отдельно. Итак, в основном, как сгруппировать список команд, как если бы это была одна единственная функция?

+1

Как насчет 'for x in *; do cat $ x | calculateforfile; сделано?? – lurker

+0

не должны ли это делать? каков текущий результат при использовании xargs? –

+0

если у вашего метода есть проблема, тогда исправление легко, 'ls * | xargs -I файл (файл cat | calculateforfile) ' –

ответ

1

Не нужно использовать xargs. Просто используйте цикл. Вам также не нужно использовать cat. Просто перенаправьте свой ввод с файлом.

for A in *; do 
    calculateforfile < "$A" 
done 

В одной строке:

for A in *; do calculateforfile < "$A"; done 
+0

Спасибо. Это работает для меня. – user40129

0

Если вы ищете xargs решения для этого (например, найти команды)

find . -name "*.txt" | xargs -I % cat % 

Это будет кот всех файлов находятся под текущий каталог, который заканчивается .txt Опция -I - это ключ

+0

хорошо, если вы использовали 'find', я предполагаю, что использование' -exec' было бы более логичным, вместо того, чтобы передавать его во вторую программу, 'find -name '* .txt" -exec "blah blah" {} \; 'где '{}' это файл в каждом цикле –

+0

Я думал показать использование 'xargs'. Таким образом, вход может быть любым, 'find' был только там, чтобы проиллюстрировать ввод для cat – julumme

+0

Что делать, если я хочу запустить (cat fileinthelist | calculateforfile)? и что такое символ%? Я не могу найти его на странице man. – user40129

Смежные вопросы