Ich habe mit mehreren Ordnern gearbeitet. Jeder Ordner hat einen eindeutigen Namen und enthält mehrere CSV-Dateien. Ich habe ein Bash-Skript, das für jede CSV-Datei im Ordner einen Ordner mit dem Namen der Datei erstellt und N Kopien der Dateien im neuen Ordner anfertigt. Im ursprünglichen Bash-Skript kann ich den spezifischen Ordner angeben, in dem es ausgeführt wird.
Aber jetzt habe ich hunderte Ordner und versuche, dieses Skript zu automatisieren, aber es funktioniert nicht richtig
#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
Ich brauche Hilfe, um dies zu ermöglichen, danke im Voraus. Grüße
Antwort1
Warum nicht verwenden find
? Ich glaube nicht, dass mein Skript schneller sein wird, aber es funktioniert irgendwie. -execdir
Benötige GNU Find, aber mit ein paar Optimierungen -exec
könnte POSIX Find auch funktionieren.
#!/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 '{}' \;