GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリ内のすべての拡張子とそれぞれのファイル数を取得する

解決策 1:

/var/cache$ sudo find ./ -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq -c | sort -n
      1 .6
      1 .cache
      1 .noconf
      1 .php
      1 .sl
      2 .bin
      2 .el
      2 .tdb
      4 .baseA
      4 .baseB
      4 .dat
      4 .DB
     27 .db
    221 .deb

説明は次のとおりです:

find ./ -type f

ディレクトリではなく、ファイルのみを検索

grep -E ".*\.[a-zA-Z0-9]*$"

拡張子付きのフィルタ ファイル

sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/'

パスとファイル名を削除し、拡張子のみを保存

sort | uniq -c | sort -n

並べ替え、一意、および並べ替え

解決策 2:

Linux (gnu grep) を使用しているため、ここで Perl RE (PCRE) -P を使用します。 そして grep の -o オプション。 @bindbn の回答を有力な候補として取り上げます:

find . -type f | grep -Po '\.([\w\d])*$' | sort | uniq -c | sort -n

Linux
  1. すべての「at」ジョブとそれぞれのコマンドのリストを表示する

  2. 行の発生数を並べ替えてカウントしますか?

  3. 名前でファイルとディレクトリを削除します。そのようなファイル、又はディレクトリはありません?

  1. フォルダー階層内の個別のファイル拡張子をすべて見つけるにはどうすればよいですか?

  2. 各ファイルとディレクトリのサイズを一覧表示し、Bash で降順で並べ替える方法は?

  3. すべてのファイル拡張子を小文字に変換する

  1. ディレクトリのすべてのファイルを空にする linux コマンド

  2. bashでファイルの絶対ディレクトリを取得するにはどうすればよいですか?

  3. ディレクトリ内のすべてのフォルダーのサイズを取得する