So identifizieren Sie Dateien ohne ext im Namen, aber mit einer Erweiterung in der Eigenschaft, z. B. nav.example.file, bei dem es sich eigentlich um ein Textdokument handelt

So identifizieren Sie Dateien ohne ext im Namen, aber mit einer Erweiterung in der Eigenschaft, z. B. nav.example.file, bei dem es sich eigentlich um ein Textdokument handelt

find -maxdepth 1 ! -name "*.*" -print

Dies identifiziert keine Dateinamen wie INSSO.TEST.20100503.16400006, bei denen es sich um ein XML-Dokument handelt

Antwort1

Wenn Sie Dateien anhand ihres Inhalts und nicht anhand ihres Namens finden möchten, müssen Sie in ihnen suchen. findenwird das nicht von selbst tun, aber Sie können ihm sagen, dass es ein anderes Programm ausführen soll, das dies tut.

Ich würde beginnen mitDatei(1), das eine Beschreibung der Datei ausgibt. Wenn es für Ihre XML-Dateien nützlich ist, würde ich ein Skript schreiben, das den Dateinamen ausgibt, wennfindensagt, dass es der richtige Typ ist. Rufen Sie dann dieses Skript für alle berechtigten Dateien mit folgendem auf:

find . -type f -exec my-xml-detector {} \;

Antwort2

Wenn Sie im aktuellen Verzeichnis nach Dateien suchen möchten, die keine Erweiterung haben oder deren Erweiterung länger als 3 Zeichen ist bzw. die eine leere Erweiterung aufweisen, können Sie Folgendes tun:

find . ! -name . -prune ! -name '?*.[!.]' \
                        ! -name '?*.[!.][!.]' \
                        ! -name '?*.[!.][!.][!.]'

(dabei wird davon ausgegangen, dass kein Dateiname Bytefolgen enthält, die keine gültigen Zeichen bilden).

verwandte Informationen