So benennen Sie Dateien um und löschen dabei das Zeichen " mithilfe der Linux-Shell

So benennen Sie Dateien um und löschen dabei das Zeichen " mithilfe der Linux-Shell

Ich habe mehrere Dateien mit Anführungszeichen im Dateinamen, wie diese:

"Dies_ist_ein_langer_Dateiname_mit_Anführungszeichen".mp3

Ich versuche, den Linux-Befehl rename zu verwenden. Ich kann den Unterstrich einfach löschen mit

rename 's/_//g' *

aber wenn ich es mit \" versuche, passiert nichts (ich verwende -n, um die Änderungen anzuzeigen):

rename -n 's/\"//g' *

nichts wird umbenannt

Danke!

Antwort1

Ihre Dateinamen enthalten „intelligente Anführungszeichen“:

“Tokyo_String_Quartet-Beethoven_-Late_String_Quartets-CD1-11-Quartet”.mp3 

Versuchen Sie den renameBefehl mit diesen anstelle von"

Oder ohne Verwendung renamekönnen Sie die folgende Option verwenden sed:

for f in *.mp3
    do
        new=$(echo $f | sed -E 's/[“”]//g')
        mv $f $new
    done

Wie bei allen Batch-Shell-Operationen mvist es am sichersten, sie auf einer Sicherungskopie des Originalordners zu testen/auszuführen. Sie können sie testen, indem Sie sie beim ersten Versuch echoanstelle von eingeben.mv

Antwort2

Es besteht keine Notwendigkeit, doppelte Anführungszeichen innerhalb einzelner Anführungszeichen zu maskieren.

rename -n 's/"//g' *

Antwort3

Ich konnte es in Bash folgendermaßen tun:

file=$(ls | grep \")
newName=$(echo $file | sed 's/\"//g')
mv $file $newName

verwandte Informationen