Einen Bereich nummerierter Dateien verschieben?

Einen Bereich nummerierter Dateien verschieben?

Ich habe 291 nummerierte Dateien (beginnend bei 001 – Titel und endend bei 291 – Titel), die in separate Verzeichnisse verschoben werden müssen. (001 bis 021 in Ordner 1, 022 bis 053 in Ordner 2, es ist nicht unbedingt jedes Mal die gleiche Anzahl an Dateien).

Ich dachte, ich könnte es auf eine eklige Art und Weise wie diese machen:ls | head -n 21 | sed -r 's|(.*)|mv \1 /path/to/folder1|' | sh

Ich bin fast sicher, dass es einen besseren Weg gibt. Wie könnte dieser aussehen?

EDIT: Das hätte also gut funktioniert, aber ich habe mich erinnert …

Ich bin nicht auf die Verwendung eines Terminals angewiesen, sondern habe einen Dateimanager zum Klicken und Ziehen verwendet. Die Frage bleibt jedoch bestehen.

Antwort1

Da Sie sagten, dass es nicht immer genau 21 Dateien sind, müssen Sie die Dateien manuell verschieben, und um das effektiv zu tun, könnten Sie verwendenKlammererweiterung:

mv filename{001..21} dir1
mv filename{022..53} dir2
...

Antwort2

Dadurch werden die Dateien wie beschrieben verschoben (mit der Ausnahme, dass der zweite Bereich für die zweiten 21 Dateien 022 bis 042 wäre).

for ((i = 1; i <= 291; i++))
do
    ((d = (i - 1) / 21 + 1))
    printf -v file 'filename%03d' "$i"
    printf -v dir  'dirname%02d'  "$d"
    [[ -d "$d" ]] && mkdir "$d"
    mv "$f" "$d"
done

Antwort3

Was ich meine ist, dass wenn Sie viele Dateien verschieben möchten (z. B. Zehntausende oder eine Million), die Shell sich über eine zu lange Dateiliste beschweren wird, wenn Sie nur {1..20} verwenden.

Inzshkönnen Sie diemveingebaut:

setopt extended_glob zmodload

zsh/Dateien

Anschließend können Sie einen Befehl wie den folgenden verwenden:

mv ./somefolder/{1..100000}.txt  pathto/yourfolder/

oder wenn Sie Shell-Skripte schreiben, können Sie Folgendes tun:

for i in `seq $start $end`;  
    do  mv "prefix${i}suffix.txt" pathto/yourfolder/  
done

Wenn Sie zsh nicht verwenden, können Sie sich aufhttps://unix.stackexchange.com/questions/128559/solving-mv-argument-list-too-long

verwandte Informationen