Считать общее количество файлов в определенном каталоге с определенным расширением

19

Я хочу подсчитать общее количество файлов в определенном каталоге, заканчивающееся расширением «.mp4».

Я получаю следующую команду:

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

Он подсчитывает все файлы в определенном каталоге, но я хочу, чтобы количество файлов заканчивалось расширением .mp4.

Есть ли для этого команда Ubuntu?

    
задан Prakash V Holkar 24.04.2014 в 17:48
источник

7 ответов

7

Здесь вы можете сделать это

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

Это дает вам количество

    
ответ дан Shrikant1712 24.04.2014 в 18:03
источник
31

К сожалению, эту проблему трудно решить так, чтобы поддерживать все имена файлов и переноситься. Это безопасно (он обрабатывает скрытые файлы, пути, содержащие пробелы, тире и даже новые строки) < strike> и совместимый с 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
    
ответ дан l0b0 24.04.2014 в 17:52
7

Это находит, сортирует и перечисляет все файлы по расширению в порядке:

find . -type f | sed 's/.*\.//' | sort | uniq -c
    
ответ дан squozen 22.03.2016 в 16:23
3

Я думаю, что это очень просто, как следующие команды.

$ 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 .

    
ответ дан xiaodongjie 24.04.2014 в 17:57
0

Вы можете использовать ls -1 *.mp4 | wc -l .

Здесь будут перечислены все файлы, заканчивающиеся на .mp4 , печать каждого файла в новой строке ( ls -1 *.mp4 ), выводящий результат в wc , который будет подсчитывать количество новых строк, используя флаг -l .     

ответ дан Louis Matthijssen 24.04.2014 в 17:55
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
    
ответ дан Back.Slash 24.04.2014 в 18:13
-3

Сначала перейдите в нужный каталог. Например:

cd ~/Videos

Тогда:

ls -la | grep ".mp4" | wc -l

В этом списке содержится содержимое вашего каталога, включая скрытые файлы, с одним файлом на строку. Он передает результат grep, который будет показывать только элементы, содержащие расширение .mp4. Затем этот список передается в «подсчет слов» для подсчета строк.

В результате будет выведено количество строк, которые соответствуют, что будет соответствовать количеству файлов .mp4, которые у вас есть в этом каталоге.

    
ответ дан K. Darien Freeheart 24.04.2014 в 17:53