Выполнить цикл for для нескольких папок

Выполнить цикл for для нескольких папок

Я работаю с несколькими папками, каждая папка имеет уникальное имя, и в каждой из них находится несколько 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 '{}' \;

Связанный контент