다음과 같은 많은 파일 목록이 있습니다.
i18n/
editor.utf8
editor_fr.utf8
editor_ko.utf8
editor_ge.utf8
...etc. (dozens of these)
fizzbuzz
"입력 파일"과 "출력 파일"을 프로그램 매개변수로 사용하는 유틸리티를 실행하고 싶습니다 . 호출의 예는 다음과 같습니다.
fizzbuzz editor.utf8 editor.properties
또는:
fizzbuzz editor_fr.utf8 editor_fr.properties
그래서 내가 원하는 통화마다입력 파일아래에 다른 파일이 있고 i18n/
, 출력 파일을 이름은 같지만 파일 확장자( )가 다른 파일로 만들고 싶습니다 .properties
. 출력/속성 파일이 이미 존재하는 경우 완전히 덮어써야 합니다.
fizzbuzz
모든 파일 .utf8
에서 실행 되고 i18n/
각 파일, 단 하나의 파일에 대해 동일한 이름의 출력을 지정할 수 있도록 스크립트를 어떻게 작성합니까 .properties
?
지금까지 최선을 다한 시도는 다음과 같습니다.
for FILE in i18n
do
fizzbuzz FILE FILE.properties
done
별도의 파일을 만들어주시면 됩니다 FILE.properties
.
답변1
모든 파일이 i18n보다 한 수준 아래에 있으면 find 메소드가 필요하지 않습니다.
다음을 사용하도록 for 명령을 변경합니다.
i18n/*에 있는 파일의 경우
또한 변수를 참조할 때는 앞에 $를 붙여야 합니다.
내 조언은 for 루프를 처음 실행할 때 안전한 명령을 사용하라는 것입니다. 그렇지 않으면 많은 피해를 입힐 수 있습니다. 예를 들어, 보이는 FILE 값을 나열하고 실행할 명령을 표시하십시오.
for FILE in i18n/*
do
echo "fizzbuzz $FILE $FILE.properties"
done
이것이 원하는 결과에 만족하면 에코를 제거하십시오.
이 답변은 여러 디렉터리를 순회하려는 경우 제대로 작동하지 않지만 원래 질문을 따르며 플랫 디렉터리일 수 있는 것처럼 보입니다.