これはかなり基本的なものです。JSファイルのいくつかのサブフォルダーを含むフォルダーがあり、それらのフォルダー内のすべてのファイルに対してGoogleのClojureコンパイラーを実行したいと思います。単一のファイルを処理するコマンドは次のとおりです。
Java -jar compiler.jar --js filename.js --js_output_file newfilename.js
これを変更して、ディレクトリ構造内のすべてのJSファイルで実行するにはどうすればよいですか?
find
を使用できます:
find . -name "*.js" -exec Java -jar compiler.jar --js {} --js_output_file new{} \;
単純なfor
ループを使用することもできます。特に、ファイルが単一のディレクトリ内(サブディレクトリなし)にある場合に便利です。サブディレクトリでも機能するように変更できます。
再帰なし:
for filename in ./*.js
do
Java -jar compiler.jar --js "${filename}" --js_output_file "new${filename}"
done
または同等のワンライナーとして:
for filename in ./*.js; do Java -jar compiler.jar --js "${filename}" --js_output_file "new${filename}"; done
サブディレクトリに再帰するには(GNU bash 4.0以降が必要)(ありがとう @ ChrisDown ):
shopt -s globstar
for filename in ./**/*.js; do
Java -jar compiler.jar --js "${filename}" --js_output_file "new${filename}"
done