여러 파일에서 명령을 실행하는 방법 JS 파일의 여러 하위 폴더가있는 폴더가 있으며

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


답변