567 Stimmen

Wie benenne ich die Erweiterung einer Reihe von Dateien um?

In einem Verzeichnis habe ich ein Bündel von *.html Dateien. Ich würde sie gerne alle umbenennen in *.txt

Wie kann ich das tun? Ich verwende die Bash-Shell.

2voto

dudusan Punkte 401

Wenn Sie PERL bevorzugen, gibt es ein kurzes PERL-Skript (ursprünglich geschrieben von Larry Wall, dem Erfinder von PERL), das genau das tut, was Sie hier wollen: tips.webdesign10.com/files/rename.pl.txt .

Für Ihr Beispiel sollte das Folgende genügen:

rename.pl 's/html/txt/' *.html

1voto

Nixon Kosgei Punkte 508

Hier ist, was ich zum Umbenennen verwendet habe .edge Dateien zu .blade.php

for file in *.edge; do     mv "$file" "$(basename "$file" .edge).blade.php"; done

Funktioniert einwandfrei.

1voto

Deano Punkte 10434

Schön und einfach!

find . -iname *.html  -exec mv {} "$(basename {} .html).text"  \;

1voto

J Kluseczka Punkte 461

Sie können auch eine Funktion in der Bash erstellen und sie zu .bashrc oder ähnliches und verwenden Sie es dann, wo immer Sie wollen.

change-ext() {
    for file in *.$1; do mv "$file" "$(basename "$file" .$1).$2"; done
}

Verwendung:

change-ext css scss

Quelle des Codes in der Funktion: https://stackoverflow.com/a/1224786/6732111

1voto

CB Bailey Punkte 693084

Leider ist es nicht trivial, das portabel zu machen. Sie brauchen wahrscheinlich ein bisschen expr Magie.

for file in *.html; do echo mv -- "$file" "$(expr "$file" : '\(.*\)\.html').txt"; done

Entfernen Sie das Echo, wenn Sie zufrieden sind, dass es das tut, was Sie wollen.

Editar: basename ist in diesem speziellen Fall wahrscheinlich etwas besser lesbar, obwohl expr ist im Allgemeinen flexibler.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X