Umbenennen und Neuanordnen mehrerer Dateinamen ohne Umbenennen

Umbenennen und Neuanordnen mehrerer Dateinamen ohne Umbenennen

Ich habe fast 500 Verzeichnisse voller Dateien mit Namen wie e141107140847.pdfund 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.pdfkeinen Zugriff auf den Befehl.rename

Die Zuordnung erfolgt wie folgt:

  • e— Müllcharakter, der entfernt werden muss
  • 14— bedeutet SDUXS. Ich muss 36 verschiedene Zuordnungen verarbeiten.
  • 11- Monat
  • 07— Tag, zu entfernen
  • 14— Jahr, in 4 Ziffern umzuwandeln
  • 0847— 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..esacAnweisung für alle Ihre Zuordnungen und schließen Sie sie in ein ein. for filename in *.pdfAnschließend können Sie die Ausgabe bestätigen. Ändern Sie dann einfach das echoin:

mv "$filename" "${year}_${month}_${mapping}_${location}.pdf"

verwandte Informationen