나는 각각 다른 이름을 가진 여러 폴더와 각 폴더 내의 여러 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
? 내 스크립트가 더 빨라질 것이라고는 생각하지 않지만 여전히 괜찮습니다. -execdir
gnu 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 '{}' \;