
Beispielsweise von Dateien, die mit der Nummer 1 beginnen, bis zum Ordner mit der Nummer 1 und so weiter… kann ich das für jede einzelne Datei mit dem folgenden Befehl tun:
find /home/ -name '1_*_*_*_*_*_*.nii' -exec cp '{}' /home/1 ';'
Antwort1
Meinst du so etwas (1 bis 100)?
for i in {1..100}; do
find /home/ -name "${i}_*_*_*_*_*_*.nii" -exec cp '{}' /home/${i} \;
done
Antwort2
Führen Sie dieses Skript im Quellverzeichnis aus:
for name in *.nii ; # find all files with a pattern and process its
do
directory="${name%%_*}/"
if [ ! -d "$directory" ]; then mkdir "$directory" ; fi # make directory if not exist
cp "$name" "$directory" ; # copy file into the directory
done
Das ${name%%_*}
entfernt das längste passende Suffixmuster. In diesem Fall sind es alle Symbole vor dem ersten _
. Das Ergebnis der Ersetzung für Name 1_2_3.nii
ist cp 1_2_3.nii 1/
.
Diese Lösung ist flexibler, da sie die erforderlichen Ordner automatisch erstellt und kein Präfix für den Dateibereich angegeben werden muss.