Terminal Linux

1. Terminal Linux

João Fernandes
X_water

(usa Outra)

Enviado em 13/04/2024 - 10:35h

Como eu consigo colocar as pastas em ordem crescente de acordo com a quantidade de arquivo dentro delas no terminal, mostrando a quantidade de arquivos?
EX:
20 pasta1
30 pasta2
50 pasta3
...


  


2. Re: Terminal Linux

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 13/04/2024 - 10:35h

Para listar as pastas em ordem crescente de acordo com a quantidade de arquivos dentro delas no terminal, você pode usar o comando `ls` com a opção `-l` e `sort`. Aqui está um exemplo de como fazer isso:

```bash
ls -l | grep '^d' | awk '{print $9, system("ls -l " $9 " | wc -l")}' | sort -nk2
```

- `ls -l`: lista os arquivos e diretórios com detalhes
- `grep '^d'`: filtra apenas as linhas que são diretórios
- `awk '{print $9, system("ls -l " $9 " | wc -l")}'`: para cada diretório encontrado, imprime o nome do diretório seguido da quantidade de arquivos dentro dele
- `sort -nk2`: organiza em ordem crescente pela quantidade de arquivos

Dessa forma, você terá a lista das pastas em ordem crescente de acordo com a quantidade de arquivos dentro delas. Espero ter ajudado!


3. Re: Terminal Linux

aguamole
aguamole

(usa KUbuntu)

Enviado em 13/04/2024 - 20:08h

Solução dada pelo chatGPT, aqui esta funcionando:
$ find . -type d -exec bash -c 'echo -n "$(find "{}" -type f | wc -l) {}" && echo' \; | sort -n -k1 



4. Re: Terminal Linux

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 15/04/2024 - 17:09h

X_water escreveu:

Como eu consigo colocar as pastas em ordem crescente de acordo com a quantidade de arquivo dentro delas no terminal, mostrando a quantidade de arquivos?
EX:
20 pasta1
30 pasta2
50 pasta3
...

Boa tarde, segue sugestão:
ls -lR /diretorio/|awk 'BEGIN{RS="\n\n";FS="\n";}{N=0;D=0;for(n=1;n<=NF;n++) if($n~/^-/) N++;}{printf "%02d:%s\n",N,$1}'|sort -t':' -nrk2 

Como funciona:
ls -lR, lista no formato:
diretorio/
....
(conteúdo, incluindo dirs)

diretorio/dir01
....
.....
awk 'BEGIN{RS="\n\n";FS="\n";}:
Define os "registros", separados por uma linha vazia, com um campo por linha.
{N=0;for(n=1;n<=NF;n++) if($n~/^-/) N++;}
Define var N=0 (em cada laço),
Percorre os campos de cada registro, e,
Conta somente arquivo comum, (N++)
{printf "%02d:%s\n",N,$1}'|sort -t':' -nrk2
Imprime e ordena pela quantidade de arquivos.
#----------------------------------------------------------#

É isso, testado e funcionando a contento. [Debian 12.5]

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/udou.$/s/^[ ]+//p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts