2015-06-27 7 views
1

Я использую groovy в течение последних двух недель. У меня есть сценарий, который я обычно запускаю следующим образом:Запуск сценария с различными входными файлами

groovy script input 

Где входное имя входного файла. Тем не менее, теперь я хотел бы повторить то же самое для целого каталога из примерно 100 таких файлов - есть ли способ запустить это в одной команде, а не один за другим?

+1

Вы должны изменить заводной скрипт для взять несколько входных файлов или сделать это уже? – cdarke

ответ

1

Конечно, использовать цикл оболочки:

for file in *; do groovy script "$file" > file.out; done 

Это итерацию по всем файлам (и каталоги) в текущем каталоге. Чтобы сделать это рекурсивно, что означает, что он также будет выглядеть в подкаталогах, используйте:

shopt -s globstar 
for file in **/*; do groovy script "$file" > file.out; done 

Наконец, чтобы избежать каталогов (если таковые имеются), использование:

for file in *; do [ -f "$file" ] && groovy script "$file" > file.out; done 
+0

Я попытался сделать что-то вроде этого, чтобы проверить: для файла в *; сделать wc -l файл; и это, похоже, не работает. Что я делаю не так? В нем нет такого файла или каталога – user132290

+0

Ha! Я думал, что это проблема, но я недостаточно опыт, чтобы понять правильный синтаксис. Спасибо! – user132290

+0

Еще один вопрос: что делать, если файлы находятся не в моем текущем каталоге, а в подкаталоге? Высказывание для штрафа в ./subdirectory/* не работает – user132290

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