find . -print | grep -E 'avi$|wmv$|mp4$' | wc -l
11603828 journal zzztkfの日記: 配下のディレクトリから任意の拡張子のファイルの総数を計算する 9 日記 by zzztkf 2014年09月28日 22時28分 find . -print | grep -E 'avi$|wmv$|mp4$' | wc -l
ディレクトリ除外 (スコア:2)
Re:ディレクトリ除外 (スコア:2)
find . -type f -print0 | xargs -0 ls -db | grep -E '\.(avi|wmv|mp4)$' | wc -l
Re:ディレクトリ除外 (スコア:1)
> -print0
> xargs -0
めったにお目にかかれないもの(特に前者)を見てしまった。眼福。
Re:ディレクトリ除外 (スコア:1)
それもそうだが、拡張子と言っているのに、「.」があることをチェックしていない方が問題のような。
yet another (スコア:1)
ただし、GNU find。
Re: (スコア:0)
find . -regex '.*\.\(avi\|wmv\|mp4\)' | wc -l
ただし、GNU find。
マジか?と思ってfind(1)見たら本当だった…。
regexってPOSIXに無かったのね。
regextypeだけがGNU拡張かと思ってた。
# デフォルトの-regextype emacsはエスケープ多すぎで正直キモいよね。
# でも毎回毎回-regextype指定するのは面倒だからalias find='find -regextype posix-extended'してる堕落した私。
# エスケープ必須なのは.の前だけで十分です。わかって下さいよ。
長くなるけど (スコア:0)
find . -name \*.avi -o -name \*.wmv -o -name \*.mp4 | wc -l
Re:長くなるけど (スコア:1)
なぜかそれだと遅いんだよね。
実用上問題があるかと言われれば、疑問だけど。
grep 使うなら、wc いらないよ、 (スコア:0)
grep -cE とすればよい。