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.
Hier ist eine Lösung, die AWK verwendet. Stellen Sie sicher, dass die Dateien im Arbeitsverzeichnis vorhanden sind. Andernfalls, cd in das Verzeichnis, in dem sich die html-Dateien befinden, und führen Sie dann den folgenden Befehl aus:
for i in $(ls | grep .html); do j=$(echo $i | grep -oh "^\w*." | awk '{print $1"txt"}'); mv $i $j; done
Ich habe folgenden Code in meine .bashrc geschrieben
alias find-ext='read -p "Path (dot for current): " p_path; read -p "Ext (unpunctured): " p_ext1; find $p_path -type f -name "*."$p_ext1'
alias rename-ext='read -p "Path (dot for current): " p_path; read -p "Ext (unpunctured): " p_ext1; read -p "Change by ext. (unpunctured): " p_ext2; echo -en "\nFound files:\n"; find $p_path -type f -name "*.$p_ext1"; find $p_path -type f -name "*.$p_ext1" -exec sh -c '\''mv "$1" "${1%.'\''$p_ext1'\''}.'\''$p_ext2'\''" '\'' _ {} \;; echo -en "\nChanged Files:\n"; find $p_path -type f -name "*.$p_ext2";'
In einem Ordner wie "/home/<user>/example-files" mit dieser Struktur:
Die Befehle würden sich folgendermaßen verhalten:
~$ find-text
Path (dot for current): example-files/
Ext (unpunctured): txt
example-files/file1.txt
example-files/file2.txt
~$ rename-text
Path (dot for current): ./example-files
Ext (unpunctured): txt
Change by ext. (unpunctured): mp3
Found files:
./example-files/file1.txt
./example-files/file1.txt
Changed Files:
./example-files/file1.mp3
./example-files/file1.mp3
~$
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.