Ne yazık ki bu iyi huylu sorunun tüm dosya adlarını destekleyen ve taşınabilir bir şekilde çözmek zordur. Bu güvenlidir (gizli dosyaları, boşluk içeren satırları, kısa çizgileri ve hatta yeni satırları kullanır) ve POSIX uyumludur :
find /path/to/directory -mindepth 1 -type f -name "*.mp4" -printf x | wc -c
Özyinelemeli olmasını istemiyorsanız, basitçe ekleyin -maxdepth 1.
lsÇıktıyı çözümlememelisin .
Ölçek:
$ 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
Kabul edilen cevap ile karşılaştırın :
$ ls -lR ./*.mp4 | wc -l
3
Veya diğer öneriler:
$ 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
ls -1newline karakterlerinin kullanımı bu durumdalsçıktıların ayrıştırılması mantıklıdır . İşaretli olan -R bayrağının kullanımı için yanlış.