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 -1
newline 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ış.