Dateien in einem bestimmten Verzeichnis schrittweise umbenennen?


7

Ich habe ein Verzeichnis mit einer Reihe von .txtDateien. Ich benötige einen Befehl, um diese Dateien mit einem Befehl umzubenennen. Der Name lautet also:file1.txt , file2.txt, file3.txt , etc .

Irgendeine Hilfe ?


Stört es Sie, wenn es sich um ein Python-Skript handelt?
— Stormvirux

Das Skript sollte im Terminal ausgeführt werden, aber Sie können Ihr Skript schreiben.
— Nux

2
for i in *.txt; do echo mv "$i" "file${i#file}"; done
— Fakhri Zulkifli

Antworten:


20

Sie können dies im Terminal verwenden, um Dateien nach Ihren Wünschen umzubenennen.

j=1;for i in *.txt; do mv "$i" file"$j".txt; let j=j+1;done

Es wird den Job machen.

Erläuterung:

  • Stellen Sie einen Zähler ein jund setzen Sie ihn zunächst auf 1
  • Initiieren Sie eine for-Schleife und verwenden Sie einen Shell-Glob *.txt, um alle txtDateien abzurufen .
  • Benennen Sie sie für jede Datei mit um mvund erhöhen Sie den Zähler um 1.

1
Kannst du deinen Befehl erklären?
— Nux

@nux sehen Sie die Änderungen und zögern Sie nicht, bei Bedarf zu diskutieren.
— Souravc

ok danke, ich werde es als richtige Antwort betrachten, ich habe ein kleines Skript gefunden, das auch meine Bedürfnisse befriedigt.
— Nux

7

Sie können den Befehl zum Umbenennen verwenden, der normalerweise in einer Standardinstallation enthalten ist:

c=0 rename 's/.*/sprintf("file%05d.txt", ++$ENV{c})/e' *

Verwenden Sie das Flag -n, wenn Sie zuerst einen Test durchführen möchten:

c=0 rename -n 's/.*/sprintf("file%05d.txt", ++$ENV{c})/e' *

Dies funktioniert so, dass für jedes Argument der Perl- s///Ausdruck ausgeführt und die Umbenennung vom Original in die ersetzte Zeichenfolge durchgeführt wird. In der Ersatzzeichenfolge sprintfformatiere ich den Namen, wobei ich die Umgebungsvariable cals Zähler von 1 verwende.

In den meisten Fällen benötigen Sie möglicherweise auch eine führende "0" für jede Zahl. Dies %05dist der Trick, bei dem 5 die Anzahl der Ziffern ist.


1
Tolles Beispiel, sollte eine Top-Antwort sein. Mit %05danstelle von können %dSie einen führenden 0Namen mit 5 Ziffern hinzufügen .
— Kostanos

2

Der folgende Befehl benennt Dateien auch schrittweise um:

cd (directory containing files )

Führen Sie dann dieses Skript aus:

count=1
for i in *; do
    mv "${i}" file${count}.`echo "${i}" | awk -F. '{print $2}'`
    ((++count))

done 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.