Você pode usar find
:
find . -name "*.js" -exec java -jar compiler.jar --js {} --js_output_file new{} \;
Isso é bem básico, eu tenho uma pasta com várias subpastas de arquivos JS e eu quero rodar o compilador Clojure do Google em todos os arquivos dessas pastas. O comando para processar um único arquivo é o seguinte:
java -jar compiler.jar --js filename.js --js_output_file newfilename.js
Como modifico isso para ser executado em todos os arquivos JS na estrutura de diretórios?
Você também pode usar um simples loop for
, especialmente se os arquivos estiverem em um único diretório (sem subdiretórios). Ele pode ser modificado para trabalhar com subdiretórios também.
Sem recursão:
for filename in ./*.js
do
java -jar compiler.jar --js "${filename}" --js_output_file "new${filename}"
done
ou como um one-liner equivalente:
for filename in ./*.js; do java -jar compiler.jar --js "${filename}" --js_output_file "new${filename}"; done
Para recorrer a subdiretórios (requer GNU bash 4.0 ou mais recente) (obrigado @ChrisDown ):
shopt -s globstar
for filename in ./**/*.js; do
java -jar compiler.jar --js "${filename}" --js_output_file "new${filename}"
done