일부 하위 디렉터리에 수천 개의 *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
변수를 사용하여 파일 이름을 참조하는 것을 기억하세요.