So benennen Sie eine große Anzahl von Dateien um und entfernen die Erweiterung

So benennen Sie eine große Anzahl von Dateien um und entfernen die Erweiterung

Ich muss die folgenden Dateien umbenennen. Ich möchte nur .job-209675die Dateinamen entfernen, die mit beginnen SOA, aber die ursprünglichen Dateinamen beibehalten, da sich in diesem Verzeichnis noch andere Dateien befinden

zum Beispiel
Vorher: ./SOA_990377897NW0001_1557340549734.xml.job-2074645
Nachher:./SOA_990377897NW0001_1557340549734.xml

Antwort1

Wenn eine Variable filenameeinen Ihrer Dateinamen enthält, ${filename%.job-*}wäre dies der Name ohne den Teil nach dem letzten Punkt.

Um die Dateinamen zu durchlaufen und sie nacheinander umzubenennen,

for filename in SOA_*.job-*; do
    echo mv -i "$filename" "${filename%.job-*}"
done

Das echoist zum Schutz da. Sie sollten die Schleife einmal ausführen und die Ausgabe überprüfen und dann das entfernen, echowenn Sie denken, dass es korrekt ist. Die -iOption bis mvbewirkt, dass vor dem Überschreiben einer vorhandenen Datei eine Bestätigung angefordert wird.

Dies setzt voraus, dass alle relevanten Dateien (und sonst nichts) mit dem Muster übereinstimmen SOA_*.job-*.

verwandte Informationen