名前に拡張子がないが、プロパティに拡張子があるファイルを識別する方法。例: nav.example.file は実際にはテキスト ドキュメントです

名前に拡張子がないが、プロパティに拡張子があるファイルを識別する方法。例: nav.example.file は実際にはテキスト ドキュメントです

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

これは、XML文書であるINSSO.TEST.20100503.16400006のようなファイル名を識別しません。

答え1

ファイルの名前ではなく、その内容に基づいてファイルを検索する場合は、ファイルの中を調べる必要があります。 探す単独では実行されませんが、別のプログラムを実行するように指示することができます。

まず最初にファイル(1)はファイルの説明を出力します。XMLファイルで役立つ場合は、ファイル名を出力するスクリプトを作成します。探す正しいタイプであることがわかります。次に、すべての適切なファイルに対してそのスクリプトを呼び出します。

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

答え2

現在のディレクトリ内で拡張子がないファイル、拡張子が 3 文字を超えるファイル、または拡張子が空のファイルを検索する場合は、次のようにします。

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

(ファイル名に有効な文字を形成しないバイトシーケンスが含まれていないことを前提としています)。

関連情報