
Ich habe fast 500 Verzeichnisse voller Dateien mit Namen wie e141107140847.pdf
und muss sie in etwas Benutzerfreundliches wie umbenennen . Ich habe versucht, eine For-Schleife und sed zu verwenden, aber ich bin überfordert und kann nicht herausfinden, wie ich alles zusammenfügen soll. Außerdem habe ich auf diesem Rechner (FreeBSD) 2014_11_SDUXS_0847.pdf
keinen Zugriff auf den Befehl.rename
Die Zuordnung erfolgt wie folgt:
e
— Müllcharakter, der entfernt werden muss14
— bedeutetSDUXS
. Ich muss 36 verschiedene Zuordnungen verarbeiten.11
- Monat07
— Tag, zu entfernen14
— Jahr, in 4 Ziffern umzuwandeln0847
— Standortcode, aufbewahrt.
Antwort1
Also, um das für Ihr konkretes Beispiel zusammenzufassen:
#!/bin/bash
filename='e141107140847.pdf'
echo Given file name ${filename} -
case ${filename:1:2} in
14)
mapping="SDUXS"
;;
*)
mapping="XXXXX"
;;
esac
month="${filename:3:2}"
year="20${filename:7:2}"
location="${filename:9:4}"
echo New filename - ${year}_${month}_${mapping}_${location}.pdf
scheint das gewünschte Ergebnis zu liefern. Erweitern Sie die case..esac
Anweisung für alle Ihre Zuordnungen und schließen Sie sie in ein ein. for filename in *.pdf
Anschließend können Sie die Ausgabe bestätigen. Ändern Sie dann einfach das echo
in:
mv "$filename" "${year}_${month}_${mapping}_${location}.pdf"