Benennen Sie die Dateien 000 ... 001 ... 002 ... bis 001 ... 002 ... 003 um

838
mt025

Ich wollte eine 50-GB-Datei aus einem Internetarchiv herunterladen. Es wurden bis zu 300 kb / s heruntergeladen und es würde Tage dauern. Also habe ich ein Skript geschrieben, um die Dateien in Stücken herunterzuladen und auf Google Drive hochzuladen, ohne dass ich meinen 20-GB-Server zwischenspeichern und auffüllen muss. Ich habe jetzt Dateien .000dazu .082.

Ich möchte das in 7z öffnen, aber ich war ein bisschen nachlässig und begann 000stattdessen mit. Stattdessen 001möchte ich sie nicht zuerst kombinieren. Wie sollte ich diese Dateien dann umbenennen, um sie um 1 zu erhöhen, so dass ich Dateiextsets bekomme 001, 002, 003?

Ich habe versucht, sie in 7z zu öffnen, liest aber nur die .000-Datei.

Ich habe Zugriff auf Windows und Linux, ich habe das Bulk File Renamer-Dienstprogramm für Windows ausprobiert, aber es scheint nicht zu gefallen, Dateierweiterungen zu erhöhen, indem es verwendet Numbering (10)wird. Es gibt eine Möglichkeit, dies im Bulk File Renamer-Dienstprogramm zu tun über die Verwendung der Linux-Befehlszeile, um sie alle umzubenennen?

-2
@DavidPostill Ich bin sicher, dass dies mit einer Art 1-Zeilen-Linux-Befehl ausgeführt werden kann. Ich nenne das kaum ein Skript. mt025 vor 6 Jahren 0
@ mt025 „Ich bin mir sicher, dass dies mit einer Art 1-Zeilen-Linux-Befehl möglich ist. Ich nenne das kaum ein Skript. “Trotz meiner Bemühungen, Skripts für Leute zu vermeiden, [hier ist ein„ 1-Zeilen-Linux-Befehl “] (https://superuser.com/a/1352750/167207), der kein Befehl ist, sondern ein Einzeiliges Skript. Ich hoffe, das löst die Dinge, aber Sie fordern, dass die Leute für Sie programmieren. Es gibt keine andere Möglichkeit, diese Frage zu "beantworten", aber ich habe dies aus gutem Willen getan (basierend auf Ihren Kommentaren zu Meta hier) (https://meta.superuser.com/q/13280/167207). Während Sie das Gefühl haben, diese Community sei unhöflich, vereinfachen Sie doch die Lösung. JakeGould vor 6 Jahren 0
Vielen Dank @JakeGould, ich weiß es zu schätzen und habe Ihre Kommentare von meta an Bord genommen. mt025 vor 6 Jahren 2

1 Antwort auf die Frage

2
JakeGould

Dieser One-Liner sollte funktionieren. Getestet an macOS High Sierra (10.13.6).

Es funktioniert, indem Sie ls -rDateien in umgekehrter Reihenfolge auflisten und dann - über die Magie der Mathematik - einfach +1jede Dateierweiterung hinzufügen .

Das Skript setzt voraus, dass Sie Dateien mit einem Muster wie dem folgenden benannt haben:

test.000 test.001 test.002 test.003 

Und benennt sie wie folgt um:

test.001 test.002 test.003 test.004 

Hier ist eine "Trockenlauf" -Version, die einfach den Befehl für Ihre Überprüfung enthält:

ls -r | while read f; do echo mv "$" "$.$(printf '%03d' $(expr $ + 1))"; done 

Und entfernen Sie das einfach, echoum es zum Laufen zu bringen und es so zu machen:

ls -r | while read f; do mv "$" "$.$(printf '%03d' $(expr $ + 1))"; done 
@ KamilMaciorowski Danke für den Fang! Sie haben nur ein anderes Nummerierungsskript für die Verwendung hier angepasst, aber Sie haben Recht. das "n" wird hier nicht benötigt. Nur bearbeitet, um das zu reflektieren. Funktioniert gut! JakeGould vor 6 Jahren 0
Im Allgemeinen wird das Analysieren von 'ls' nicht empfohlen. Ich bin sicher, Sie wissen es, weniger erfahrene Benutzer werden jedoch möglicherweise verwirrt. Sagen wir es also klar: [man sollte die Ausgabe von 'ls' nicht analysieren] (https://mywiki.wooledge.org/ParsingLs); Die gesamte Antwort ist jedoch auf Dateinamen nach dem strengen Muster zugeschnitten. Das macht das Parsen von 'ls' ziemlich sicher, also eine sinnvolle Ausnahme. Zusätzlich trägt dieser "Trockenlauf" zur Sicherheit bei. Upvoted Kamil Maciorowski vor 6 Jahren 2