Suche Programm um Dateien nach Dateiheader zu sortieren und anschließend diese umzubenennen



  • Nach einem Dateisystemfehler habe ich jetzt ne ganze Menge an *.CHK Dateien.

    Mit einem Hexeditor kann man manuell den Dateiheader feststellen und diese dann umbennennen, damit die Datei wieder lesbar wird, nur ist das bei ca. 1000 Dateien ziemlich umständlich.

    Daher habe ich mir gedacht ein Programm zu schreiben, daß alle Dateien einliest, den Dateiheader prüft und dann automatisch umbenennt, allerdings müßte ich das Programm erst schreiben und das benötigt Zeit die ich eigentlich für etwas anderes verwenden möchte.

    Deswegen suche ich nach einer fertigen Lösung in Form eines Programms oder Scripts, daß die gestellte Aufgabe ebenfalls erledigen kann.
    Weiß jemand rat?

    Bei den Dateien handelt es sich von Textdateien bis zu Binärdateien um alles mögliche.
    Hauptsächlich aber *.gif, .jpeg, *.png, *.html und *.pdf.
    Deren Typ sind gut am Dateiheader erkennbar.
    Alle anderen Dateien werde ich manuell mit dem Hex Editor durchprüfen. So viele werden es dann nicht mehr sein.



  • So, mit file und grep kann ich die Dateien aussortieren.

    Aber was muß ich tun, damit ich die mit grep gefundenen Dateien verschieben kann?

    file * | grep -i gif

    listet mir alle GIF Dateien auf, aber wie kann ich die nun in einen Ordner namens GIF_Ordner verschieben?

    file * | grep -i gif | mv * GIF_Ordner

    funktioniert nicht.


  • Mod

    Dieses sollte resistent gegen alle Eventualitäten sein:

    file * -F/ |grep -i gif |cut -d/ -f1 | xargs -I% mv "%" GIF_Ordner
    

    Mach dir auch klar, wie das funktioniert, du kannst hier viel über das Pipen von Befehlen lernen, du hast das noch nicht richtig verstanden.

    Den Delimiter / habe ich gewählt, weil es eines der wenigen Zeichen ist, welches garantiert nicht in einem Dateinamen vorkommt.

    Gleich korrigiert mich bestimmt jemand, welche Eventualität ich vergessen habe.

    Man kann natürlich auch gleich die Dateien umbenennen anstatt sie in einen Ordner zu verschieben (oder beides tun), dazu bin ich aber gerade zu faul.



  • Danke, ich werde das dann testen sobald ich wieder Linux gebootet habe.

    Gibt es unter Windows XP eine ähnliche Lösung?

    Ein paar der GNU/Unix Tools wie grep, gawk und file (die GNU version) habe ich auch unter Windows installiert, aber der obige Befehl geht bei Windows leider nicht.

    Die Powershell ist bei mir ebenfalls installiert, falls die etwas bringt.


Anmelden zum Antworten