지정된 하위 디렉터리의 모든 파일을 반복하여 루프를 통해 출력 이름을 지정합니다.

지정된 하위 디렉터리의 모든 파일을 반복하여 루프를 통해 출력 이름을 지정합니다.

일부 하위 디렉터리에 수천 개의 *csv 파일이 있습니다.

간단한 인라인 실행 파일을 사용하여 이러한 파일을 처리하고 새 파일로 파이프합니다.

executable file1.csv standard.csv > output_file1.csv

file1.csvfor 뿐만 아니라 해당 하위 디렉터리의 모든 파일에 대해 이 작업을 수행하기 위해 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

변수를 사용하여 파일 이름을 참조하는 것을 기억하세요.

관련 정보