私はそれぞれ異なる名前を持つ複数のフォルダと各フォルダ内の複数のCSVファイルで作業してきました。フォルダ内の各csvファイルにファイル名を使用するbashスクリプトがあります。フォルダを作成し、内部ファイルのNコピーを作成します。新しいフォルダ、元のbashスクリプトで特定のフォルダで実行するように作成できます。
ところで、今は100個のフォルダがあり、このスクリプトを自動化しようとしていますが、正しく動作しません。
#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 '{}' \;