Umbenennen mehrerer Dateien in verschiedenen Unterverzeichnissen

  • Hallo Allerseits,

    ich habe in diversen Unterverzeichnissen Sicherungsdateien, die ich jetzt wieder "aktivieren" muss. Das Namesformat dieser Dateien ist

    datei.txt.bak oder andere_datei.txt.bak oder ganzwasanderes.jpg.bak oder dateisoundso.list.bak und noch einige weitere

    Es geht darum, nur die ".txt.bak"-Dateien umzubenennen, d. h., das ".bak" bei diesen Dateien zu entfernen. Alle anderen Dateien müssen unverändert bleiben.

    Finden kann ich die Dateien beispielsweise mit

    find -name "*.txt.bak"

    Um nicht ggf. hunderte Dateien von Hand umzubenennen hätte ich gerne ein Script - hat da jemand was für mich?

  • Hi EmmJay, willkommen im Forum!

    Falls dir der im o.g. Script eingebaute Test auf Existenz der Zieldatei egal ist, geht es auch in einem Einzeiler:

    find . -type f -name "*.bak" -exec bash -c 'mv "$0" "${0%.bak}"' {} \;

    Bei mir funktioniert das so prima, dennoch rate ich dir dringend, das erstmal mit einer Sicherungskopie eines kleinen Teils der Daten zu testen.

  • Sagenhaft!

    Beide Scripts funktionieren bestens, das gibt für beide 10 von 10 Punkten! Das mit der Prüfung ob bereits vorhanden ist eindeutig die Luxusversion! Vielen Dank an Euch beide!

  • Leicht OT: wisst ihr, wo man eine gute Beschreibung für diese Shellvariablen Substitutionen wie oben z.B. ${0%.bak} findet?

    Mint Mate auf ASUS Zenbook Flip UX360U; Armbian auf Banana Pi; Mint Cinnamon auf MS Surface Go

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!