對多個資料夾運行 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 with-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 '{}' \;

相關內容