1

現在のディレクトリにとどまっているとします。すべてのファイルの総数、サイズ、アクセス許可、およびタイプごとのファイル数を一覧表示したいとします。

サンプル出力は次のとおりです。

ここにサンプルがあります:

「/home/user/poker」に関する情報を表示

ファイルの総数: 83

PDFファイル : 5

html ファイル : 9

テキストファイル : 15

不明 : 5

注意: 拡張子のない任意のファイルは、不明と見なされる可能性があります。

ls、cut、sort、unique などの簡単なコマンドを使用したいと考えています (例) ファイルにそれぞれ異なる拡張子を入れ、 wc -l を使用して行数をカウントします

または、 grep 、 awk などを使用する必要がありますか?

皆さんのアドバイスをいただければ幸いです。ありがとうございます。

4

3 に答える 3

3

最良の方法は、fileMIME タイプのみを出力して に渡すために使用することawkです。

file * -ib | awk -F'[;/.]' '{print $(NF-1)}' | sort -n | uniq -c

私のホームディレクトリでは、この出力が生成されます。

 35 directory
  3 html
  1 jpeg
  1 octet-stream
  1 pdf
 32 plain
  5 png
  1 spreadsheet
  7 symlink
  1 text
  1 x-c++
  3 x-empty
  1 xml
  2 x-ms-asf
  4 x-shellscript
  1 x-shockwave-flash

text/x-c++と思う方はtext/plainこちらをご利用ください

 file * -ib | awk -F'[;/.]' '{print $1}' | sort -n | uniq -c

  6 application
  6 image
 45 inode
 40 text
  2 video

{print $1}適切な出力を得るために、必要に応じてパーツを変更してください。

于 2012-08-18T17:12:07.077 に答える
0

find . -type f | xargs -n1 basename | fgrep . | sed 's/.*\.//' | sort | uniq -c | sort -n

これにより、ファイル拡張子の再帰的なリストが得られます。現在のディレクトリのみが必要な場合は-maxdepth 1、findコマンドにを追加します。

于 2012-08-18T16:54:00.593 に答える
0

バッシュが必要です。

files=(*)
pdfs=(*.pdf)

echo "${#files[@]}"
echo "${#pdfs[@]}"
echo "$((${#files[@]}-${#pdfs[@]}))"
于 2012-08-18T14:39:33.230 に答える