여러 폴더에서 for 루프 실행

여러 폴더에서 for 루프 실행

나는 각각 다른 이름을 가진 여러 폴더와 각 폴더 내의 여러 CSV 파일로 작업해 왔습니다. 폴더 내의 각 csv 파일에 대해 파일 이름을 사용하는 bash 스크립트가 있습니다. 폴더를 만들고 내부 파일의 N 복사본을 만듭니다. 새 폴더, 원래 bash 스크립트에서 특정 폴더에서 실행되도록 작성할 수 있습니다.

그런데 지금은 100개의 폴더가 있고 이 스크립트를 자동화하려고 하는데 제대로 작동하지 않습니다.

#cd grupo_2_pareja_D-H
#cd grupo_2_single_D-H
#cd grupo_2_tercia_CDH
for d in ./*; do
    echo "$d"
    for x in ./* .csv; do
        mkdir "${x%.*}" 
        for ((i=1;i<=10;i++)); do # Create a loop, looping N times
        cp "$x" "${x%.*}/"${x%.*}"_$i.csv" # use i in the copy command
        #rm -f "$x" # Remove the file after the N copies
        done
    done  
done

이를 달성하기 위해 도움을 찾고 있습니다. 미리 감사드립니다. 인사

답변1

왜 그것을 사용하지 않습니까 find? 내 스크립트가 더 빨라질 것이라고는 생각하지 않지만 여전히 괜찮습니다. -execdirgnu find가 필요하지만 약간만 조정하면 POSIX find -exec도 작동할 수 있습니다.

#!/bin/sh
find "$@" -type f -name '*.csv' -execdir sh -c 'name="${1%.csv}"; mkdir -- "$name"; for i in $(seq 10); do cp -- "$1" "$name/${name}_$i.csv" & done' shell '{}' \;

관련 정보