GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie bereinigt man Dateierweiterungen?

Ich habe Verzeichnisse mit .MP3-Dateien, deren Erweiterungen ich gerne in .mp3 ändern möchte. Wie geht das am einfachsten? Ich denke etwas in der Art von:

find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/1.mp3/ ; 

… obwohl ich weiß, dass das nicht ganz richtig ist. 🙂 Die Ersetzung ist nicht korrekt und ich bin mir nicht sicher, wie ich sowohl ein mv verwenden soll und ein sed Befehl mit -exec in find .

Brauche ich dafür ein Bash-Skript?

Akzeptierte Antwort:

Hier ist eine Möglichkeit, dies in Bash zu tun:

for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done

Ich habe echo verwendet Hier macht der Befehl selbst also nichts anderes, als Paare von Dateinamen auszugeben. Wenn diese Liste die Änderungen darstellt, die Sie vornehmen möchten, können Sie echo ändern zu etwas wie mv -i -- was dann Ihre Dateien verschiebt (und Sie vor dem Überschreiben auffordert).

Kurze Erklärung:

Der for iteriert durch jede Datei, die mit * übereinstimmt . Dann stellen wir fest, ob die Erweiterung bereits in Kleinbuchstaben geschrieben ist, wenn ja, fahren wir fort, wenn nicht, verschieben wir sie (oder geben sie gegebenenfalls wieder). Dies verwendet Bashs eingebaute String-Operationen, über die Sie hier lesen können:http://tldp.org/LDP/abs/html/string-manipulation.html


Linux
  1. Wie benenne ich eine Datei unter Linux um?

  2. Wie macht man eine Datei spärlich?

  3. Wie füge ich Text an eine Datei an?

  4. Wie grep \n in Datei

  5. Wie kopiere ich eine Datei transaktional?

So erstellen Sie eine Tar-Gz-Datei

So entpacken (öffnen) Sie die Gz-Datei

So tarieren Sie bestimmte Dateitypen (Erweiterungen) in einem Verzeichnis

So verknüpfen Sie eine Datei unter Linux per Symlink

Wie Echo in Datei

So bereinigen Sie unnötige Dateien