여러 파일에 대해 명령을 실행하는 방법

여러 파일에 대해 명령을 실행하는 방법

이것은 매우 기본적입니다. 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

관련 정보