ディレクトリに含まれるすべてのファイルタイプを表示するにはどうすればよいですか?


12

特定のディレクトリに存在するファイルの種類を通知するコマンドはありますか?

のようなコマンドを使用して、ファイルの種類を調べることができますod -c myfile | less

しかし、ディレクトリ内のすべてのファイルに対してそれを行う方法はわかりません。

回答:


19

が、od -c実際にファイルの内容を表示します、それは、そのファイルの種類を得るための良い方法ではありません。一部のファイルにはファイルタイプのヘッダーが含まれますが、すべてが含まれるわけではありません。より良い方法はコマンドfileです:

$ echo "hello" > foo.txt
$ file foo.txt
foo.txt: ASCII text

したがって、ディレクトリ内のすべてのファイルタイプのリストを取得するには、次のようにします。

for file in dir/*; do file "$file" | cut -d: -f 2; done | sort -u

出力例:

 PNG image data, 1500 x 500, 8-bit/color RGBA, non-interlaced
 ASCII text
 directory
 GIF image data, version 89a, 22 x 22
 ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=becf821e4d814fdb69306d0b3f686eb06992f5e5, stripped

説明

  • for file in dir/*; do ... done;:のすべてを反復処理しますdirdir単なる例です。これを検索する実際のディレクトリの名前に変更する必要があります)。各項目を順番に保存します。$file
  • file "$file"file見つかった各アイテムで実行します。
  • cut -d: -f 2:2番目のフィールド(で定義されたフィールド:)のみを出力します
  • sed 's/^ //; s/ +/ /g' :行の先頭からスペースを削除し、連続するスペースを単一のスペースに変換します。
  • sort -u :重複するファイルタイプを削除する

おかげで、しかし、私は正確にコピーして、「dir / *のファイル用;ファイル「$ file」を実行|カット-d:-f 2 |ソート-u;完了」を端末で実行し、「エラー」を取得
Mohammad Reza Rezwani

2
@alexまず最初に、「エラー」を受け取ったがあまり役に立たないと言って、常に正確なエラーを伝えてください。いずれにせよ、エラーはおそらく、という名前のディレクトリがないためでありdir/、これは単なる例の名前でしたfor file in /home/alex/*; do ... done。たとえば、それを実際のディレクトリの名前に変更する必要があります。
テルドン14

おかげで、あなたが私の間違った仕事をした場合(...ディレクトリはディレクトリではなくlsのようなコマンドだと思った-申し訳ありませんが、あなたの答えを編集した方が良いと思います)
モハマドレザレスワニ14

いい仕事でしたが、たとえば「ID3バージョン2.3.0のオーディオファイル、次を含む」、または複数の「ISO Media、MPEG v4システム、バージョン2」という4行を見ました。「重複を削除」についてはわかりません。
モハマドレザレズワニ14

@alex公平、回答は編集済み。重複を取得しないでください。sort -uそれらを削除し、行は(彼らはまた、彼らは非同一になり、スペースの異なる数を、持っているかもしれない)異なっている必要があります。
テルドン14

3

私はおそらくこのようなことをするでしょう-

find . -type f -exec file {}  \;

これは、現在のパスからファイル(ディレクトリなしなど)を検索し、file各ファイルでコマンドを実行します。


1

これを試して:

ls | xargs file -b | sort | uniq

使い方:

ls:ディレクトリの内容を一覧表示

file -b:ファイルの種類を決定します。出力行にファイル名を追加しません

sort:行をソートします

uniq:繰り返される行を省略します



1
file -b *代わりにを使用ls | xargs file -bして、解析を回避できますls
-wjandrea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.