まずはバックアップしてください。

まずはバックアップしてください。

私のディレクトリには拡張子なしで約100,000個のファイルがあります。ファイルが何であるかわかりません。一部はpdf、jpg、png、xlsなどのようです。

各ファイルに拡張子を追加する簡単な方法はありますか?

私の現在のアイデアは、各ファイルのコマンドを生成するスクリプトを作成し、fileif(例:grep png)でgrepを使用して結果を取得し、それがtrueの場合はpngを追加することです。

誰もより良い方法がある場合。

挨拶

ベストアンサー1

簡単なことではありません。オプションfile(1)がありますが--extension、私のテスト(Debian / bullseye)では、ほとんどのファイルに疑問符(???)が表示されます。

そして、既知のすべてのファイルタイプのエンコーディングは、少なくとも3000以上のファイルタイプが検出されたように見えるcase..esacため、機能しない可能性があります。file

❯ file -l | wc -l
3186

まず、特定のディレクトリからファイル形式のリストを取得しようとします。

ノート、zsh ワイルドカードここで使用されます:

❯ file -p -n -b .*(.) *(.) | sort | uniq
ASCII text
ASCII text, with no line terminators
ASCII text, with very long lines
ASCII text, with very long lines, with no line terminators
data
empty
JPEG image data, JFIF standard 1.01, resolution (DPI), density 300x300, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=0], baseline, precision 8, 96x96, components 3
JSON data
Non-ISO extended-ASCII text, with very long lines, with CRLF, LF line terminators, with escape sequences
Python script, UTF-8 Unicode text executable
UTF-8 Unicode text
UTF-8 Unicode text, with very long lines
very short file (no magic)
X11 Xauthority data

findの行は同じ出力を生成します。

find -maxdepth 1 -type f -exec file -p -n -b {} \; | sort | uniq

このリストからファイル形式の拡張子マップ/検索ファイルを作成し、それを使用してファイルの名前を変更します。

ext1;ASCII text
ext2;ASCII text, with no line terminators
ext3;ASCII text, with very long lines
ext4;ASCII text, with very long lines, with no line terminators
ext5;data
ext6;empty
ext7;JPEG image data, JFIF standard 1.01, resolution (DPI), density 300x300, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=0], baseline, precision 8, 96x96, components 3
ext8;JSON data
ext9;Non-ISO extended-ASCII text, with very long lines, with CRLF, LF line terminators, with escape sequences
ext10;Python script, UTF-8 Unicode text executable
ext11;UTF-8 Unicode text
ext12;UTF-8 Unicode text, with very long lines
ext13;very short file (no magic)
ext14;X11 Xauthority data

ファタイ

おすすめ記事