Contagem do número total de arquivos no diretório específico com extensão específica

21

Eu quero contar o número total de arquivos em um determinado diretório que termina com a extensão ".mp4".

Estou recebendo o seguinte comando:

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

Ele conta todos os arquivos no diretório específico, mas eu quero a contagem de arquivos que terminam com a extensão .mp4.

Existe algum comando do Ubuntu para isso?

    
por Prakash V Holkar 24.04.2014 / 17:48
fonte

7 respostas

9

Aqui você pode fazer isso

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

Isso te dá uma contagem

    
por Shrikant1712 24.04.2014 / 18:03
fonte
32

Infelizmente, esse problema benigno é difícil de resolver de uma maneira que suporte todos os nomes de arquivos e é portátil. Este é segura (ele lida com arquivos ocultos, caminhos que contêm espaços, traços e até mesmo novas linhas) < strike> e compatível com POSIX :

find /path/to/directory -mindepth 1 -type f -name "*.mp4" -printf x | wc -c

Se você não quer que seja recursiva, basta adicionar -maxdepth 1 .

Você não deve analisar ls saída.

Teste:

$ 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

a resposta aceitos:

$ ls -lR ./*.mp4 | wc -l
3

Ou outras sugestões:

$ 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
    
por l0b0 24.04.2014 / 17:52
fonte
7

Este encontra, classifica e lista todos os arquivos por extensão em ordem:

find . -type f | sed 's/.*\.//' | sort | uniq -c
    
por squozen 22.03.2016 / 16:23
fonte
3

Acho muito simples seguir os comandos.

$ find . -name "*.mp4" | wc -l
8

ou

$ find . | grep -i ".mp4$" | wc -l
8

Acho que os comandos acima calculam a contagem de nomes de arquivos e diretórios *.mp4

Sugiro que você use a opção -type f como find do seguinte modo.

$ find . -name "*.mp4" -type f | wc -l
8

Além disso, ls -lR pode ser usado como find .

    
por xiaodongjie 24.04.2014 / 17:57
fonte
0

Você pode usar ls -1 *.mp4 | wc -l .

Isso listará todos os arquivos que terminam em .mp4 , imprimindo cada arquivo em uma nova linha ( ls -1 *.mp4 ), enviando a saída para wc , que contará o número de novas linhas usando o sinal -l . / p>     

por Louis Matthijssen 24.04.2014 / 17:55
fonte
0

Isso deve lhe dar a lista de arquivos com .mp4

ls /path/to/directory | grep ".mp4$"

Quando combinado com wc -l , você contará

ls /path/to/directory | grep ".mp4$" | wc -l

se você quiser que a pesquisa inclua subdiretórios

ls -lR /path/to/directory | grep ".mp4$" | wc -l
    
por Back.Slash 24.04.2014 / 18:13
fonte
-3

Primeiro, mude para o diretório desejado. Por exemplo:

cd ~/Videos

Então:

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

Isto lista o conteúdo do seu diretório, incluindo arquivos ocultos, com um arquivo por linha. Ele passa o resultado para o grep, que mostrará apenas itens que contenham a extensão .mp4. Essa lista é passada para "contagem de palavras" para contar as linhas.

O resultado mostrará o número de linhas que correspondem, o que corresponderá ao número de arquivos .mp4 que você tem nesse diretório.

    
por K. Darien Freeheart 24.04.2014 / 17:53
fonte