web-dev-qa-db-ja.com

特定のディレクトリにある特定の拡張子を持つファイルの総数を数える

「.mp4」拡張子で終わる特定のディレクトリ内のファイルの総数をカウントします。

私は次のコマンドを取得しています:

ls -F |grep -v / | wc -l

特定のディレクトリ内のすべてのファイルをカウントしますが、拡張子が.mp4のファイルのカウントが必要です。

そのためのUbuntuコマンドはありますか?

30

ここでは、この方法で行うことができます

ls -lR /path/to/dir/*.jpg | wc -l

これはあなたにカウントを与えます

17
sk1712

残念ながら、この良性の問題は、すべてのファイル名をサポートし、移植可能な方法で解決するのは困難です。 これ は安全です(隠しファイル、スペース、ダッシュ、改行を含むパスを処理します) およびPOSIX互換

find /path/to/directory -mindepth 1 -type f -name "*.mp4" -printf x | wc -c

再帰的にしたくない場合は、単に-maxdepth 1を追加してください。

ls出力を解析しないでください。

テスト:

$ cd -- "$(mktemp -d)"
$ touch -- -foo.mp4 .bar.mp4 .bat.mp4 'baz.mp4
> ban.mp4'
$ find . -mindepth 1 -type f -name "*.mp4" -exec printf x \; | wc -c
4

受け入れられた答え と比較してください:

$ ls -lR ./*.mp4 | wc -l
3

または他の提案:

$ find . -name "*.mp4" | wc -l
5
$ ls -1 *.mp4 | wc -l
ls: invalid option -- '.'
Try 'ls --help' for more information.
0
$ find . -name "*.mp4" | wc -c # Answer fixed at a later time
51
$ find . -name "*.mp4" | wc -l
5
$ find . | grep -i ".mp4$" | wc -l
5
$ ls . | grep ".mp4$" | wc -l
3
42
l0b0

これは、すべてのファイルを拡張子ごとに順番に検索、ソート、およびリストします。

find . -type f | sed 's/.*\.//' | sort | uniq -c
10
squozen

次のコマンドのように非常に簡単だと思います。

$ find . -name "*.mp4" | wc -l
8

または

$ find . | grep -i ".mp4$" | wc -l
8

上記のコマンドは、ファイル名とディレクトリ名の数を計算します*.mp4

そのため、次のように-type fオプションをfindパラメーターとして使用することをお勧めします。

$ find . -name "*.mp4" -type f | wc -l
8

さらに、ls -lRfind .として使用できます

5
xiaodongjie

ls -1 *.mp4 | wc -lを使用できます。

これは、.mp4で終わるすべてのファイルをリストし、各ファイルを新しい行(ls -1 *.mp4)に出力し、出力をwcにパイプし、-lフラグを使用して新しい行の数をカウントします。

2

Linuxで拡張子別にファイルを数える方法 をチェックすると、良い答えと説明が得られます。次のコマンドを使用できます。

find . -type f | sed -n 's/..*\.//p' | sort | uniq -c
0
Dilip Rajkumar
ls | grep --count \.csv$

置換(.csvを目的の拡張子に置き換えます)

説明:単純なスキームは、ファイルのリストをフェッチし、grepで拡張子をカウントすることだと思います。 \..と一致し、$は行末の拡張子と一致します。 lsの出力がパイプされると、1行に1つのファイル名が送信されるため、次のコマンドを実行して確認できます。

ls | cat
0
Mohsin Raza

Bashでは、globを使用した配列を使用するコールドリゾートの1つです。

$ files=( *.mp4  )
$ echo ${#files[@]}
30
0

これにより、.mp4のファイルのリストが表示されます。

ls /path/to/directory | grep ".mp4$"

wc -lと組み合わせると、カウントが得られます

ls /path/to/directory | grep ".mp4$" | wc -l

検索にサブディレクトリを含める場合

ls -lR /path/to/directory | grep ".mp4$" | wc -l
0
Back.Slash