Gewusst wie: hinzufügen-Datei-Erweiterungen basierend auf den Datei-Typ auf Linux/Unix?
Dies ist eine Frage bezüglich des Unix-shell-scripting (alle shell), aber alle anderen "standard" - Scriptsprache Lösung würde auch geschätzt:
Ich habe ein directory voller Dateien, in denen die Dateinamen sind hash-Werte wie diese:
fd73d0cf8ee68073dce270cf7e770b97
fec8047a9186fdcc98fdbfc0ea6075ee
Diese Dateien haben unterschiedliche original-Dateitypen wie png, zip, doc, pdf etc.
Kann jemand ein Skript angeben, das würde benennen Sie die Dateien so, dass Sie Ihre entsprechende Datei-Erweiterung, wahrscheinlich basierend auf der Ausgabe des file
Befehl?
Antwort:
J. F. Sebastian Skript funktioniert für beide-Ausgabe der Dateinamen sowie den eigentlichen umbenennen.
Ich bin gespannt, wo diese Dateien herkommen. Ein .MSI vielleicht? Oder ein browser-cache?
Sie sind die hochgeladenen Anhänge aus einem wiki-system, die Anlagen gespeichert werden, die durch Ihren hash.
Sie sind die hochgeladenen Anhänge aus einem wiki-system, die Anlagen gespeichert werden, die durch Ihren hash.
InformationsquelleAutor Palmin | 2008-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier mimetypes' version:
Beispiel:
Folgende @Phil H die Reaktion, die folgt @csl' Antwort:
Hier ist ein snippet für das alte python-Versionen (nicht getestet):
Sollte es auf Python 2.3.5 (glaube ich).
Hmm... die Kommentare nicht erlauben Formatierungen, aber ich hoffe, Sie bekommen die Idee. Der Fehler ^ unter die "for" - Anweisung
Es ist ein generator-Ausdruck. Es funktioniert nicht auf Python 2.3.5. Ich habe es getestet auf Python-2.5.2. Ich will hinzufügen, Schnipsel für Python 2.3.5
Ich habe den Ausschnitt für die alte Python-version. Es ist nicht getestet.
Das zweite snippet fast arbeitet für Python 2.3.5, musste ich hinzufügen .rstrip (), um die Zeile "mime = Ausgang.split(';')[0].lower().rstrip ()", weil der mime-type hat einige Leerzeichen.
InformationsquelleAutor
Können Sie
um einen MIME-Typ. Sie könnten möglicherweise lookup den Typ in eine Liste und fügen Sie die Erweiterung. Finden Sie eine Liste der MIME-Typen und Beispiel-Datei-Erweiterungen auf dem Netz.
VORSICHTIG: Es erscheint der link oben zu mimetype.org ist nicht mehr gültig und führt zu einer clickbait-Website.
Danke, hab ich aktualisiert den link.
InformationsquelleAutor csl
Folgenden csl Antwort:
Ich würde vorschlagen, du schreibst ein Skript, das die Ausgabe von
file -i filename
, und gibt eine Erweiterung (split zu Räumen, finden Sie die '/', Blick nach oben, dass der Begriff in einer Tabelle-Datei) in der Sprache Ihrer Wahl - ein paar Linien bei den meisten. Dann können Sie etwas tun:in der bash, oder werfen ein bash-Skript. Oder machen die get_extension Skript größer, aber das macht es weniger nützlich nächste mal, wenn Sie wollen, dass der entsprechenden Erweiterung.
Bearbeiten: ändern von
for f in *
zuls | while read f
weil die letzteren Griffe Dateinamen mit Leerzeichen in (einer bestimmten nightmare on Windows).InformationsquelleAutor Phil H
Natürlich, es sollte Hinzugefügt werden, dass die Entscheidung über einen MIME-type nur auf der Basis der Datei(1) die Ausgabe kann sehr ungenau/vage (was ist "data" ?) oder sogar komplett falsch...
InformationsquelleAutor Keltia
Vereinbarung mit Keltia, und erarbeiten einige auf seine Antwort:
Kümmern-einige Dateitypen können problematisch sein.
JPEG2000, zum Beispiel.
Und andere zurückgeben könnte zu viel info gegeben, die "Datei" den Befehl ohne die option-tags. Der Weg zu vermeiden diese mit "Datei -b" für eine kurze Rückkehr von Informationen.
BZT
InformationsquelleAutor silversleevesx