「.mp4」拡張子で終わる特定のディレクトリ内のファイルの総数をカウントします。
私は次のコマンドを取得しています:
ls -F |grep -v / | wc -l
特定のディレクトリ内のすべてのファイルをカウントしますが、拡張子が.mp4のファイルのカウントが必要です。
そのためのUbuntuコマンドはありますか?
ここでは、この方法で行うことができます
ls -lR /path/to/dir/*.jpg | wc -l
これはあなたにカウントを与えます
残念ながら、この良性の問題は、すべてのファイル名をサポートし、移植可能な方法で解決するのは困難です。 これ は安全です(隠しファイル、スペース、ダッシュ、改行を含むパスを処理します) およびPOSIX互換:
find /path/to/directory -mindepth 1 -type f -name "*.mp4" -printf x | wc -c
再帰的にしたくない場合は、単に-maxdepth 1
を追加してください。
テスト:
$ 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
これは、すべてのファイルを拡張子ごとに順番に検索、ソート、およびリストします。
find . -type f | sed 's/.*\.//' | sort | uniq -c
次のコマンドのように非常に簡単だと思います。
$ 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 -lR
はfind .
として使用できます
ls -1 *.mp4 | wc -l
を使用できます。
これは、.mp4
で終わるすべてのファイルをリストし、各ファイルを新しい行(ls -1 *.mp4
)に出力し、出力をwc
にパイプし、-l
フラグを使用して新しい行の数をカウントします。
Linuxで拡張子別にファイルを数える方法 をチェックすると、良い答えと説明が得られます。次のコマンドを使用できます。
find . -type f | sed -n 's/..*\.//p' | sort | uniq -c
ls | grep --count \.csv$
置換(.csvを目的の拡張子に置き換えます)
説明:単純なスキームは、ファイルのリストをフェッチし、grepで拡張子をカウントすることだと思います。 \.
は.
と一致し、$
は行末の拡張子と一致します。 lsの出力がパイプされると、1行に1つのファイル名が送信されるため、次のコマンドを実行して確認できます。
ls | cat
Bashでは、globを使用した配列を使用するコールドリゾートの1つです。
$ files=( *.mp4 )
$ echo ${#files[@]}
30
これにより、.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