Contar arquivos agrupando pela extensão

1. Contar arquivos agrupando pela extensão

Jefferson de Souza Ribeiro
jeffersongg18

(usa Red Hat)

Enviado em 04/06/2018 - 17:15h

Boa tarde!

Sou novo aqui.. desculpa se estiver perguntando uma bobeira!

Estou com um problema aqui na empresa.. tenho um diretório no Linux que existe vários aquivos, para ser mais claro... dentro dessa pasta tem um pouco mais de 180000 arquivos de varias extensões.

Gostaria de saber se tem como eu contar quantos arquivos tem nessa pasta agrupando essa quantidade por extensão. EX:

Aquivos:

1000.txt
2000.txt
3000.txt
4000.jpg
5000.jpg
6000.cdx
7000.tmp

No meu pensamento era um relatorio tipo :
txt - 3
jpg -2
cdx -1
tmp- 1

Se alguém tiver uma dica .. fico muito agradecido .

Mais uma vez peço desculpas.. se falei alguma bobagem.

Att


  


2. Re: Contar arquivos agrupando pela extensão

Matheus
pylm

(usa Gentoo)

Enviado em 04/06/2018 - 17:17h

De modo bem simples seria:


ls -l *.extensão | wc -l





3. Re: Contar arquivos agrupando pela extensão

Jefferson de Souza Ribeiro
jeffersongg18

(usa Red Hat)

Enviado em 04/06/2018 - 17:29h

pylm escreveu:

De modo bem simples seria:


ls -l *.extensão | wc -l




Obrigado por tentar ajudar PYLM, mas infelizmente.. pela grande quantidade de arquivo.. não sei quais extensões que existem.

Nesse exemplo que vc colocou.. eu teria o resultado de 1 extensão por vez..

Eu estava pensando em ter um relatório com o resultados da quantidade de todas extensões presentes no diretório.



4. Re: Contar arquivos agrupando pela extensão

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 04/06/2018 - 19:32h

Vejaí se serve:
#!/bin/bash
# Varre um diretório e conta os arquivos de acordo com sua extensão e tipo-mime.

dir=$1
if [ "$#" -ne "1" ]; then
echo "Modo de usar: ./script.sh diretório"
exit 1
fi

IFSOLD=$IFS
IFS=$'\n'

for arq in $(find $dir -type f)
do
ext=$([[ "$arq" = *.* ]] && echo ".${arq##*.}" || echo '---')
type=$(file -ib "$arq" | awk -F\; '{print $1}')
echo "($ext) $type" >> log
done

IFS=$IFSOLD

logname=$(basename $dir)

sort log -o log
awk '{count[$0]++}END{for(j in count) print j,"("count[j]" occurences)"}' log | sort | column -t >$logname.log

rm log
cat $logname.log



5. Re: Contar arquivos agrupando pela extensão

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 04/06/2018 - 22:07h

jeffersongg18 escreveu:

Boa tarde!

Sou novo aqui.. desculpa se estiver perguntando uma bobeira!

Estou com um problema aqui na empresa.. tenho um diretório no Linux que existe vários aquivos, para ser mais claro... dentro dessa pasta tem um pouco mais de 180000 arquivos de varias extensões.

Gostaria de saber se tem como eu contar quantos arquivos tem nessa pasta agrupando essa quantidade por extensão. EX:

Aquivos:

1000.txt
2000.txt
3000.txt
4000.jpg
5000.jpg
6000.cdx
7000.tmp

No meu pensamento era um relatorio tipo :
txt - 3
jpg -2
cdx -1
tmp- 1

Se alguém tiver uma dica .. fico muito agradecido .

Mais uma vez peço desculpas.. se falei alguma bobagem.

Att


Boa noite Jefferson.
Veja se esse comando ajuda:
ls -1 |awk -F'.' '$2 !="" {print $2}'|sort|uniq -c|sort -nr 

Aqui funcionou....
Saída:
997 html
311 sh
243 txt
150 ogg
86 mp3
65 php
64 pdf
53 gif
49 css
. . .
Execute no DIRETORIO que vc quer os resultados, ou informe o diretório no comando, assim "ls -1 DIRETORIO"
Att.:
Marcelo Oliver




6. Re: Contar arquivos agrupando pela extensão

Jefferson de Souza Ribeiro
jeffersongg18

(usa Red Hat)

Enviado em 06/06/2018 - 10:34h

msoliver escreveu:

jeffersongg18 escreveu:

Boa tarde!

Sou novo aqui.. desculpa se estiver perguntando uma bobeira!

Estou com um problema aqui na empresa.. tenho um diretório no Linux que existe vários aquivos, para ser mais claro... dentro dessa pasta tem um pouco mais de 180000 arquivos de varias extensões.

Gostaria de saber se tem como eu contar quantos arquivos tem nessa pasta agrupando essa quantidade por extensão. EX:

Aquivos:

1000.txt
2000.txt
3000.txt
4000.jpg
5000.jpg
6000.cdx
7000.tmp

No meu pensamento era um relatorio tipo :
txt - 3
jpg -2
cdx -1
tmp- 1

Se alguém tiver uma dica .. fico muito agradecido .

Mais uma vez peço desculpas.. se falei alguma bobagem.

Att


Boa noite Jefferson.
Veja se esse comando ajuda:
ls -1 |awk -F'.' '$2 !="" {print $2}'|sort|uniq -c|sort -nr 

Aqui funcionou....
Saída:
997 html
311 sh
243 txt
150 ogg
86 mp3
65 php
64 pdf
53 gif
49 css
. . .
Execute no DIRETORIO que vc quer os resultados, ou informe o diretório no comando, assim "ls -1 DIRETORIO"
Att.:
Marcelo Oliver



Muito obrigado.. deu certo!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts