我一直在使用多个文件夹,每个文件夹都有不同的名称,每个文件夹内都有多个 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 '{}' \;