2017-09-17 4 views
0

Ich habe ein Verzeichnis, das mehrere Dateien mit verschiedenen Erweiterungen (pdf, doc, txt ... etc) enthält.Linux - Datei umbenennen unter Beibehaltung der Erweiterung

Ich versuche, alle Dateien entsprechend dem Verzeichnisnamen umzubenennen, während die Dateierweiterung gleich bleibt. Der folgende Code funktioniert gut, wenn alle Dateien PDF sind, ansonsten wird die TXT-Datei auch in PDF geändert.

Wie kann ich Dateien umbenennen, während die Dateierweiterung Erhaltung

mv "$file" "${dir}/${dir}-${count}.pdf" 

Dank.

Antwort

0

können Sie dies durch Bash tun.

können Sie bitte weitere Details angeben. Wie entscheidet man über diesen Variablenwert $ dir und $ count?

wenn Sie bereits wissen, was Sie den Dateinamen wie unter

alten Namen ändern möchten | NEUER NAME | Pfad

TEST.1 | newtest.1 | Pfad

arty.2 | xyz.2 | Pfad

Wenn Sie es durch bestimmte Namen ersetzen möchten, können Sie eine Liste wie oben vorbereiten und dann mit while oder for loop durch die Datei ziehen. unten ist einfach bash-Snippet für Fall, in dem Sie Dateien unter mehreren Verzeichnis

while IFS="|" read OLD NEW PATH 
do 
    cd $Path 

    filename=`echo $NEW|awk -F '.' '{print $1}'` 

    filetype=`echo $NEW|awk -F '.' '{print $2}'` 

    mv $OLD $filename.$filetype 

done<FILE_PATH 

haben, wenn der Betrieb unter einzigen Verzeichnis ausführen möchten dann unter Snippet funktionieren.

for i in $(ls /tmp/temp) 
do 
    filename=`echo $i|awk -F "." '{print $1}'` 
    fileType=`echo $i|awk -F "." '{print $2}'` 
    mv $i $filename.$fileType 
done 
0

Ich nehme an, Sie tun dies in einer Art von Schleife? Wenn ja, könnten Sie die Dateierweiterung greifen zuerst mit

ext="${file##*.}" # eg. ext="txt", ext="pdf"... 

Und ersetzen pdf mit $ext in Ihrem mv Befehl. Getestet mit sh, bash, dash, ksh.

Verwandte Themen