これは非常に基本的です。 JSファイルのサブフォルダが複数あるフォルダがあり、そのフォルダ内のすべてのファイルに対してGoogleのClojureコンパイラを実行したいと思います。単一ファイルを処理するコマンドは次のとおりです。
java -jar compiler.jar --js filename.js --js_output_file newfilename.js
ディレクトリ構造内のすべてのJSファイルで実行されるようにどのように変更できますか?
答え1
あなたはそれを使用することができますfind
:
find . -name "*.js" -exec java -jar compiler.jar --js {} --js_output_file new{} \;
答え2
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以降が必要です)(ありがとう。@クリスタン):
shopt -s globstar
for filename in ./**/*.js; do
java -jar compiler.jar --js "${filename}" --js_output_file "new${filename}"
done