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).