Nos dias atuais o sistema GNU/Linux esta muito mais fácil de se usar pela grande evolução das interfaces gráficas (DE – Desktop Environment) como KDE, Gnome, Xfce, Mate etc, em relação à alguns anos atrás.
Com isso, caso em algum momento seu sistema apresente algum bug que te impossibilite de usar a interface gráfica, o jeito é se virar dentro da tela preta executando comando (CLI – Command Line Interface) em seu ambiente.
Com isso, vamos ver como encontrar arquivos em um diretório via CLI com o comando find, ls e du, podendo ser arquivo com um tamanho relativamente grande ou pequeno.
A sintaxe pode variar de acordo com a distribuição GNU/Linux. Portanto, leia as páginas do manual.
Como encontrar arquivos em um diretório via CLI
Os comandos executados foram em um sistema GNU/Linux Debian. Lembre-se que no Debian os comandos devem ser executados como ROOT. Porém, também saiba que é possível habilitar o sudo no Debian com este tutorial.
O comando find (search for files in a directory hierarchy)
Segue abaixo o comando find com suas sintaxe para encontrar um tipo de arquivo bastando passar as informações de acordo com sua necessidade.
find {/caminho/do/arquivo} -type f -size +{tamanho-do-arquivo-em-kb}k -exec ls -lh {} \; | awk '{ print $5 ": " $9 }'
Um exemplo para encontrar arquivos grandes .iso, maiores que 1 GB (Gigabytes), equivalente a 1048576 kB (Quilobytes) no diretório ~/Downloads/ do usuário.
find ~/Downloads/*.iso -type f -size +1048576k -exec ls -lh {} \; | awk '{ print $5 ": " $9 }'
No comando acima foi combinado o comando find para procurar o arquivo juntamente com o ls para listar o que estamos procurando, no caso arquivo com a extensão “.iso”, fazendo o filtro com o awk para mostrar apenas as colunas com a informação do tamanho do arquivo e o caminho onde se encontra o arquivo.
Para listar todos os arquivos no diretórios ~/Downloads/ventoy-1.0.79/WebUI/static/img/ com menos de 5 b (bytes) de tamanho, execute o comando abaixo.
find ~/Downloads/ventoy-1.0.79/WebUI/static/img/ -size -5b
Localizando arquivo maior que 100 MB (Megabytes) usando o comando find no diretório /var/log/.
sudo find /var/log/ -type f -size +100M
Caso queria que mostre outras informações como proprietário, tamanho etc, insira no final do comando a sintaxe para o ls: -exec ls -lh {} \; .
sudo find /var/log/ -type f -size +100M -exec ls -lh {} \;
O comando ls (list directory contents)
Com o comando ls, também podemos encontrar o menor arquivo em um diretório, combinando com o tail para mostrar as últimas 10 linhas ou com o head as 10 primeiras linhas.
Os parâmetros usados:
- -l – formato de listagem longa
- -S – ordena por tamanho de arquivo, o maior primeiro
- -h – tamanhos de impressão como 1K, 234M, 2G etc
- -r – ordem inversa durante a ordenação
No comando abaixo, será mostrado as últimas 10 linhas em ordem crescente por tamanho do arquivo com o tail.
sudo ls -lShr /var/log | tail -10
Agora será mostrado as primeiras 10 linhas em ordem crescente por tamanho do arquivo com o head.
sudo ls -lShr /var/log | head -10
O comando du (estimate file space usage)
Além do comando find e ls, podemos listar os arquivos maiores ou menores com o comando du que estima o uso do espaço no arquivo.
Nos comandos abaixo, combinando com o head e o tail, vamos procurar arquivos que contenha apenas .gz em /var/log/, organizando com o comando sort do menor para o maior.
sudo du -csh /var/log/*.gz | sort -h | head -20
sudo du -csh /var/log/*.gz | sort -h | tail -20
Não há um único comando que podemos usar para procurar e listar arquivos grandes ou pequenos, mas os que foi mostrado nesse post ajuda bastante no dia a dia. Então é isso pessoal, até a próxima!