对多个文件夹运行 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 '{}' \;

相关内容