Я работаю с несколькими папками, каждая папка имеет уникальное имя, и в каждой из них находится несколько CSV-файлов. У меня есть скрипт bash, который для каждого CSV-файла внутри папки создает папку с именем файла и делает N копий файлов внутри новой папки. В исходном скрипте bash я могу указать конкретную папку, в которой он будет запускаться.
Но теперь у меня есть сотня папок, и я пытаюсь автоматизировать этот скрипт, но он не работает должным образом.
#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 '{}' \;