이것은 매우 기본적이며 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