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.
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.
Für eine bessere Lösung (mit nur Bash-Funktionalität, im Gegensatz zu externen Aufrufen), siehe eine der anderen Antworten .
Das Folgende würde genügen und erfordert nicht, dass das System über die rename
Programm (auch wenn Sie dies in den meisten Fällen auf einem System haben):
for file in *.html; do
mv "$file" "$(basename "$file" .html).txt"
done
EDIT : Wie in den Kommentaren erwähnt, funktioniert dies nicht bei Dateinamen mit Leerzeichen, wenn sie nicht in Anführungszeichen gesetzt werden (jetzt oben hinzugefügt). Wenn Sie nur an Ihren eigenen Dateien arbeiten, von denen Sie wissen, dass sie keine Leerzeichen im Dateinamen haben, wird dies funktionieren, aber wenn Sie etwas schreiben, das später wiederverwendet werden könnte, lassen Sie die richtige Anführungszeichen nicht aus.
Sie möchten Folgendes verwenden rename
:
rename -S <old_extension> <new_extension> <files>
rename -S .html .txt *.html
Dies bewirkt genau das, was Sie wollen - es ändert die Erweiterung von .html
zu .txt
für alle Dateien, die *.html
.
Anmerkung: Greg Hewgill weist korrekterweise darauf hin, dass es sich hierbei nicht um ein Bash-Builtin, sondern um einen separaten Linux-Befehl handelt. Wenn Sie nur etwas für Linux benötigen, sollte dies gut funktionieren; wenn Sie etwas plattformübergreifendes benötigen, schauen Sie sich eine der anderen Antworten an.
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.