2

Linux ディレクトリのリスト内のファイルを再帰的にカウントするにはどうすればよいですか?

例:

/dog/
  /a.txt
  /b.txt
  /c.ipynb

/cat/
  /d.txt
  /e.pdf
  /f.png
  /g.txt

/owl/
  /h.txt

次の出力が必要です。

5 .txt
1 .pynb
1 .pdf
1 .png

次のことを試しましたが、運がありませんでした。

find . -type f | sed -n 's/..*\.//p' | sort | uniq -c
4

3 に答える 3

1

次のように、Perl ワンライナーを使用して、必要な形式で出力を作成します。

find . -type f | perl -pe 's{.*[.]}{.}' | sort | uniq -c | perl -lane 'print join "\t", @F;' | sort -nr

Perl ワンライナーでは、次のコマンド ライン フラグを使用し
-eます。 : ファイル内ではなくインラインでコードを検索するように Perl に指示します。
-n: 入力を一度に 1 行ずつループし、デフォルトで に割り当て$_ます。
-p: 入力を一度に 1 行ずつループし、デフォルトで に割り当て$_ます。print $_各ループ反復の後に追加します。
-l: コードをインラインで実行する前に入力行セパレーター ("\n"デフォルトでは *NIX で) を取り除き、印刷時に追加します。:空白またはオプションで指定された正規表現で配列に
-a分割します。$_@F-F

関連項目:
perldoc perlrun: Perl インタープリターの実行方法: コマンド ライン スイッチ
perldoc perlrequick: Perl 正規表現クイック スタート

于 2020-12-20T17:02:55.900 に答える