Ich habe diese beiden Dateien in meinem Home-Verzeichnis -
hello_newest.txt
goodbye_newest.txt
Ich möchte sie umbenennen, so dass der "neueste" Teil des Dateinamens vollständig entfernt wird, so dass sie wieder erscheinen hello.txt
undgoodbye.txt
Dies ist der Befehl, den ich ausführe -
find -name "*.txt" -exec rename 's/newest//i' {} ";"
Es wird kein Fehler ausgegeben und es passiert auch nichts mit den Dateien, nachdem ich diesen Befehl ausgeführt habe. Ich habehttp://www.computerhope.com/unix/rename.htmund auf der Grundlage einiger der vorhandenen Beispiele scheint es zu funktionieren.
Ich bin sicher, es ist etwas Einfaches, aber was übersehe ich?
Antwort1
Es scheint, als ob es an der Version von Redhat liegt, die wir verwendet haben. Der Befehl -
rename _newest '' *
Scheint die gleichen Ziele zu erreichen.
Danke für die Hilfe.
Antwort2
Andere Syntax. Hat aber bei mir funktioniert:
for i in *.txt; do mv "$i" "`echo $i | sed 's/_[^.]*//'`"; done
Alle TXT-Dateien werden mithilfe einer For-Schleife gefunden und anschließend die Zeichen nach dem Unterstrich mithilfe von sed entfernt.