Usaremos os comandos ls + wc ou grep para sabermos quantidade de arquivos dentro de uma determinada pasta.
Comandos utilizados aqui
- ls = Para listar conteúdo de diretórios
- wc = Exibe/conta quantidade de caracteres, palavras, linhas e bytes de um arquivo de texto
- grep = Exibe/printa na tela linhas de um texto de acordo com os critérios(filtro) de busca que queremos.
- Pipe = Pipe(pronuncia-se paipe 🙂 ) nada mais é que a a barra vertical ( | ). Localizado entre as teclas Shift e letra Z do seu teclado
Conhecendo a Estrutura da Pasta onde Trabalharemos
Iremos usar a pasta pastaTeste que criei dentro de /home/elder/Downloads com a seguinte estrutura:
./pastaTeste/ ├── arquivo01.txt ├── arquivo02.txt ├── dir01 │ ├── texto099.txt │ └── texto.txt └── file01.txt
Acima marquei de:
- Vermelho: pasta principal, dentro da qual trabalharemos
- Azul: os Arquivos
- Verde: As pastas dentro da pasta principal
A partir daqui, consideraremos que estaremos dentro da pasta /home/elder/Downloads.
Quantos Itens(ignoraremos o conteúdo das subpastas) há dentro da pasta “pastaTeste”
- Execute ls | wc -l. A opção “-l” do wc serve para contar apenas linhas, neste caso conta as linhas da resposta gerada pelo ls. O pipe serve para passar a resposta do ls para o wc
[elder@serverTeste Downloads]$ ls ./pastaTeste/ | wc -l 4
Temos 4 itens dentro da pasta pastaTeste. Abaixo realço em laranja os itens
./pastaTeste ├── arquivo01.txt ├── arquivo02.txt ├── dir01 │ ├── texto099.txt │ └── texto.txt └── file01.txt
Quantos Arquivos há Dentro da Pasta “pastaTeste”
Execute o comando ls -l ./pastaTeste/ | grep “^-” -c . Observe o “-l” no ls e grep “^-” no grep. O “^- -c” do grep serve para encontrar linhas de um texto que se iniciam o hífen “-” e o -c para contar ao invés de exibir as linhas
[elder@serverTeste Downloads]$ ls -l ./pastaTeste/ | grep "^-" -c 3
Temos 3 arquivos dentro da pasta pai(pastaTeste); mas uma vez, ignoramos os arquivos da subpasta(dir01). Os marco abaixo de laranja:
./pastaTeste ├── arquivo01.txt ├── arquivo02.txt ├── dir01 │ ├── texto099.txt │ └── texto.txt └── file01.txt
Quantas Pastas há Dentro da Pasta “pastaTeste”
- Execute o último comando executado anteriormente, alterando apenas o hífen (-) no grep por uma letra d
[elder@serverTeste Downloads]$ ls -l ./pastaTeste/ | grep "^d" -c 1
Temos apenas uma pasta
./pastaTeste ├── arquivo01.txt ├── arquivo02.txt ├── dir01 │ ├── texto099.txt │ └── texto.txt └── file01.txt
Para sabermos quantos arquivos ou pastas há levando em conta subpastas ou toda a estrutura acrescente um -R ao ls
Quantos arquivos Há levando em conta tudo, pastas e subpastas
- Execute o mesmo comando acima acrescentando apenas o -R ao ls
[elder@serverTeste Downloads]$ ls -Rl ./pastaTeste/ | grep "^-" -c 5
Temos 5 aquivos:
./pastaTeste ├── arquivo01.txt ├── arquivo02.txt ├── dir01 │ ├── texto099.txt │ └── texto.txt └── file01.txt
Quantas pastas Há levando em conta as subpastas
- O mesmo comando anteriormente executado, apenas substitua o hífen(-) por uma letra d no grep e acrescente -R ao ls
[elder@serverTeste Downloads]$ ls -Rl ./pastaTeste/ | grep "^d" -c 1
Continuamos com uma só 🙂
./pastaTeste ├── arquivo01.txt ├── arquivo02.txt ├── dir01 │ ├── texto099.txt │ └── texto.txt └── file01.txt
Bom, é isso aí. Espero que tenha gostado!
Siga-nos em nossas redes:
Link Facebook: https://www.facebook.com/gnulinuxbr
Link WhatsApp: https://chat.whatsapp.com/JbxmZmLvIIGCDLjd1VFMUO
Link Telegram: https://t.me/gnulinux_brasil
G+: https://plus.google.com/communities/112884163231229355409
YouTube: https://www.youtube.com/channel/UCwyFWDqE0v7SwpZenjmzxYQ
Olá
Poderia ajudar-me no seguinte:
Imagine que tenho estas pastas
./pastaTeste
├── arquivo01.txt
├── arquivo02.txt
├── dir01
│ ├── texto099.txt
│ └── texto.txt
└── file01.txt
./pastaTeste2
├── arquivo21.txt
├── arquivo22.txt
├── dir02
│ ├── texto299.txt
│ ├── texto2.txt
│ └── texto3.txt
└── file21.txt
Pretendo saber quantos ficheiro tem dentro de cada subpasta dir*
O resultado ideal seria:
/pastaTeste/dir01
2
/pastaTeste/dir02
3
obrigado