![지정된 하위 디렉터리의 모든 파일을 반복하여 루프를 통해 출력 이름을 지정합니다.](https://linux55.com/image/107001/%EC%A7%80%EC%A0%95%EB%90%9C%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B0%98%EB%B3%B5%ED%95%98%EC%97%AC%20%EB%A3%A8%ED%94%84%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EC%B6%9C%EB%A0%A5%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EC%A7%80%EC%A0%95%ED%95%A9%EB%8B%88%EB%8B%A4..png)
일부 하위 디렉터리에 수천 개의 *csv 파일이 있습니다.
간단한 인라인 실행 파일을 사용하여 이러한 파일을 처리하고 새 파일로 파이프합니다.
executable file1.csv standard.csv > output_file1.csv
file1.csv
for 뿐만 아니라 해당 하위 디렉터리의 모든 파일에 대해 이 작업을 수행하기 위해 for 루프를 만들고 싶습니다 .
나는 다음과 같은 것을 시도할 것입니다:
for file in *.csv
do
# run executable on "$file" and output
executable $file standard.csv > output
done
이것이 효과가 있을 것 같지만 각 출력의 이름을 어떻게 output_
++ 로 지정합니까 $file
?.csv
답변1
이 답변의 원본 초안을 제공해 주신 Bruno9779에게 감사드립니다. 이것이 훌륭한 답변이므로 왜 자체 삭제되었는지 잘 모르겠습니다.
거의 스스로 해냈습니다.
destinationDir="/destination/path/here/"
if cd "$destinationDir"; then
for file in *.csv; do
# run executable on "$file" and output
executable "$file" standard.csv > "${destinationDir}/output_${file}.csv"
done
else
echo "Unable to change to working directory."
fi
변수를 사용하여 파일 이름을 참조하는 것을 기억하세요.