Ich muss mehrere aufeinanderfolgende Dateien in aufeinanderfolgende Verzeichnisse kopieren. Die Dateien haben das julianische Datum (Tag des Jahres) mit anderen Informationen im Dateinamen. Die Verzeichnisse sind nach julianischem Datum (Tag des Jahres) aufgelistet. Ich benötige jede Akte, um mit dem julianischen Datum übereinzustimmen.
Zu klären....
Ich habe 365 Dateien mit der Bezeichnung "test_001.txt" bis "test_365.txt" in "/ home / aaa". Jede Datei muss in ein eigenes Verzeichnis in "/ data" mit den Bezeichnungen "001" bis "365" verschoben werden.
Hoffe das klärt es auf. Vielen Dank!
Antworten:
So etwas sollte funktionieren
quelle
seq
Startwert 1 verloren. Beitrag bearbeitet-w
Option, die sicherstellt, dass alle Ausgabesequenzen die gleiche Länge haben (dh drei Zeichen in diesem Szenario)? Abgesehen davon kann ich nicht verstehen, warum dies bei Ihnen nicht funktionieren sollte - es sei denn, Ihre Dateien stimmen nicht mit dem Glob*_NNN.*
für numerische Werte von übereinNNN
. Ich nehme an, Sie könnten es verwenden,test_${K}.txt
wenn Sie das Matching präzisieren möchten.for K in $(seq -f "test_%200g" 365); do cp *_${K}.* "/data/$K" 2>/dev/null; done
Wie ich herausgefunden habe, scheint es, dass im "seq" -Befehl '% 2' eine ganze Zahl darstellt und jede '0' einen Ort darstellt, dh Einsen, Zehner. Das 'g' schließt den Ausdruck. Ich kann mich irren, aber es funktioniert! Danke für die Hilfe!
quelle