it-swarm.com.de

Fügen Sie allen Dateien rekursiv die Dateierweiterung hinzu

Ich habe ein paar Verzeichnisse und Unterverzeichnisse, die Dateien ohne Dateierweiterung enthalten. Ich will hinzufügen .jpg auf alle Dateien in diesen Verzeichnissen. Ich habe Bash-Skripte zum Ändern der Dateierweiterung gesehen, aber nicht nur zum Hinzufügen einer. Es muss auch rekursiv sein, kann jemand bitte helfen?

101
robjmills

Alternativer Befehl ohne explizite Schleife ( man find ):

find . -type f -exec mv '{}' '{}'.jpg \;

Erklärung: Dies findet rekursiv alle Dateien (-type f) ausgehend vom aktuellen Verzeichnis (.) und wendet den Befehl move ( mv ) auf jeden von ihnen an. Beachten Sie auch die Anführungszeichen um {}, damit Dateinamen mit Leerzeichen (und sogar Zeilenumbrüchen ...) richtig behandelt werden.

217
Stephan202

dies findet Dateien ohne Erweiterung und fügt Ihre .jpg hinzu

find /path -type f -not -name "*.*" -exec mv "{}" "{}".jpg \;
59
ghostdog74

Dies ist ein wenig spät, aber ich dachte, ich würde hinzufügen, dass eine bessere Lösung (obwohl vielleicht weniger lesbar) als die bisher sein könnte:

find /path -type f -not -name "*.*" -print0 | xargs -0 rename 's/(.)$/$1.jpg/'

Verwendung der find | xargs Pattern führt im Allgemeinen zu einer effizienteren Ausführung, da Sie nicht für jede Datei einen neuen Prozess angeben müssen.

Beachten Sie, dass dies die Version des Umbenennens erfordert, die in Distributionen mit Debian-Charakter (auch als Prename bezeichnet) zu finden ist, und nicht die herkömmliche Umbenennung. Es ist jedoch nur ein winziges Perl-Skript, daher wäre es einfach genug, den obigen Befehl auf jedem System zu verwenden.

9
Chad Huneycutt

so was,

for f in $(find . -type f); do mv $f ${f}.jpg; done

Ich erwarte nicht, dass Sie durch Leerzeichen getrennte Dateinamen haben,
Wenn Sie dies tun, müssen die Namen ein wenig verarbeitet werden.

Wenn Sie den Befehl aus einem anderen Verzeichnis ausführen möchten,
Sie können den find . durch find /target/directory ersetzen.

4
nik

Zum Umbenennen aller Dateien ohne Erweiterung in Windows Basic können Sie ren * *.jpg Da die Datei keine Endung hat, benutze einfach das *, oder wenn du png zu jpg ändern willst, benutze ren *.png *.jpg

1
Nuno

rename

ich bin mir nicht sicher, ob es Dateien ohne Erweiterung umbenennen kann. (Ich bin gerade auf Windows 7)

0
dfa