Dateien umbenennen mit Bash, entfernen von Präfix und suffix
Möchte ich umbenennen einer Reihe von Dateien mit der bash, die Umwandlung dieser Datei Muster:
prefix - name - suffix.txt
In diese ein:
name.txt
Dafür schrieb ich Folgendes Skript:
find . -name "*.txt" | while read f
do
mv "${f}" "${f/prefix - /}"
done
find . -name "*.txt" | while read f
do
mv "${f}" "${f/- suffix/}"
done
Funktioniert es, aber ich möchte führen Sie die Umbenennung mit einem einzigen loop. Ist es möglich?
- Wenn Sie
rename
installiert haben, versuchen Sie dies: stackoverflow.com/questions/11990893/... - Ich bin ein Mac, ich habe keine
rename
standardmäßig installiert - Ich bin mit OSX und ich habe umbenennen verfügbar für mich. Sind Sie sicher, dass es nicht da ist?
- yep, noch immer nicht in mein OSX. Es muss Hinzugefügt wurden, auf eine höhere version (ich bin mit 10.8.5), oder vielleicht haben Sie es installiert irgendwann.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem anderen Ansatz, zum Spaß, mit regulären Ausdrücken:
Eigentlich mit dem einfachen Muster"*.txt' hat hier zwei Probleme:
Mit
find
erschwert die Prozedur, sondern ist eher richtig:"${BASH_REMATCH[1]}.txt"
. Bitte Update es, und ich werde Sie akzeptieren diese AntwortWenn Sie Zugang zu
GNU sed
haben, könnten Sie einige regex etwas wie:können Sie diese:
denen geschrieben werden kann, deutlicher als:
Wenn Sie
emacs
installiert. Sie können diedired
Funktion.In
bash
:In
emacs
:\.txt$
Enter, um alles markierentxt
- Dateien..*- \(.*\) -.*
Enter\1.txt
Enter umbenennen.emacs
Funktion?