🔍Lendo, buscando e calculando tamanho de arquivos
Já entendemos como buscar por ajuda, procurar binários e navegar no sistema de arquivos. Agora vamos tratar dos arquivos em si: ler, como calcular seu tamanho e como buscá-los.
Leitura de arquivos
Para ler um arquivo de texto, é possível utilizar qualquer um dos comandos descritos abaixo.
cat
Uso:
cat arquivo
Irá mostrar o conteúdo do arquivo na tela, na ordem que as linhas estão em disco.
Quando repassado mais de um arquivo na linha de comando, irá concatenar os dois arquivos, mostrando os seus conteúdos na tela.

tac
Uso:
tac arquivo
Irá mostrar o conteúdo do arquivo na tela, na ordem contrária que as linhas estão em disco (mostra a primeira linha como última, a segunda como penúltima etc).
Quando repassado mais de um arquivo na linha de comando, irá concatenar os dois arquivos, mostrando os seus conteúdos na tela (na ordem reversa de cada um dos arquivos).

head/tail
head e tail são utilizados para mostrar as n primeiras linhas de um arquivo ou as n últimas linhas, respectivamente. Segue abaixo a sintaxe:
head -n
inteiro
arquivo
tail -n
inteiro
arquivo

less/more
Os comandos less
/more
são bem semelhantes e sua principal função é a de realizar paginação de um arquivo - uma navegação no conteúdo semelhante aos manuais que abordamos anteriormente. Isso é útil quando o arquivo lido contém uma quantidade grande de linhas que não podem ser exibidos totalmente na tela.
O uso padrão é more arquivo
ou less arquivo
.

Calculando tamanho dos arquivos - wc, du
Já vimos que o ls -l
retorna o tamanho de um arquivo, mas também outras informações que podem não ser úteis em todas as situações. Para realizar a ação de calcular o tamanho de um arquivo, temos duas opções, descritas abaixo.
Informações de tamanho de arquivos de texto - wc
Para arquivos de texto, temos o wc
, que funciona de formas diferentes de acordo com as opções repassadas. Alguns exemplos são:
Contar a quantidade de linhas:
wc -l arquivo
Contar a quantidade de palavras:
wc -w arquivo
Contar a quantidade de caracteres:
wc -c arquivo
Contar a quantidade de linhas, palavras e caracteres (nessa ordem):
wc arquivo

Arquivos de texto são arquivos que contém apenas caracteres printáveis
Note que, embora o comando seja direcionado para arquivos de texto, utilizar a opção -c
funcionará corretamente com qualquer tipo de arquivo. Isso ocorre pois o tamanho de um caractere é exatamente um byte, então o wc
retornará corretamente o tamanho do arquivo.
Informações de tamanho de arquivos gerais e diretórios - du
Para arquivos que não são textos (e também diretórios), é possível utilizar o comando du
, que mostra o tamanho de arqiuvos em disco. Há duas opções úteis para ele:
Calculando o tamanho de arquivos e diretórios em bytes:
du -b arquivooudiretorio
Calculando o tamanho de arquivos e diretórios em unidades legíveis por humanos (kB, MB, GB...):
du --aparent-size -h arquivooudiretorio
. A opção--aparent-size
é necessária para mostrar a quantidade de bytes legíveis do arquivo em questão. Sem ela, odu
irá calcular com base no uso de disco, que é medido por blocos e não bytes em si.
Buscando arquivos com uso de filtros - find
Um dos comandos mais completos para buscar arquivos no Linux é o find
. Simplificando sua sintaxe, seu uso é o seguinte:
find /path/para/comecar/a/pesquisa opcoes
Ele permite uma vasta gama de filtros, mas para simplicidade, abordaremos apenas um pequeno subconjunto deles. São eles:
-type
Especifica o tipo do arquivo:
d
- diretóriof
- arquivo regularl
- link simbólico ("atalho")b
- dispositivo de bloco (como um HD em/dev/sda
)c
- dispositivo de caractere (como um console virtual em/dev/ttyS0
, ou um dispositivo de teclado)
É possível procurar por mais de um tipo de arquivo separando os tipos por vírgula, como em find / -type f,b
, que procurará a partir de / arquivos regulares e de bloco.
-name
Especifica uma substring case-sensitive que está contida no nome do arquivo, podendo ser o próprio nome do arquivo em si. Caracteres curinga, como o asterisco (*
) podem ser utilizados para dar match com um arquivo que não se sabe o nome exato.

-iname
Especifica uma substring case-insensitive que está contida no nome do arquivo, podendo ser o próprio nome do arquivo em si. Caracteres curinga, como o asterisco (*
) podem ser utilizados para dar match com um arquivo que não se sabe o nome exato.

-exec
Para cada linha de resultado, irá concatenar um comando que deverá ser executado para cada entrada. Vamos analisar, por exemplo, o uso do comando file
, que traz informações sobre o formato do arquivo (se é uma imagem, um documento, um executável) em conjunto com o find
:

Note que o -exec
recebe como parâmetros, nesse caso, três coisas: find
, {}
e \;
file
é o comando que queremos executar para cada linha que ofind
retornar. Verifique o comandofind tofind/
na imagem: é para cada um desses arquivos. Logo, digitamos-exec file
{}
é um marcador para o-exec
de onde deve colocar a linha retornada pelo find (ou seja, é um placeholder que será substituído pela saída). Nesse caso, o comandofile
funciona da seguinte forma:file arquivo
, logo, queremos que a saída do find seja imediatamente após ofile
, então digitamos-exec file {}
O
\;
indica qual separador o find irá utilizar para concatenar os comandos de execução. No Linux, você pode executar um comando após o outro na mesma linha finalizando o primeiro com;
. Por exemplols; cat /home/user/arquivo.txt
irá executar primeiro ols
e logo em seguida ocat
. No caso do find, ele internamente irá executar todos os comandos do-exec
concatenados, comofile primeiralinha
;
file segundalinha
;
file terceiralinha
, e utilizamos o\;
para definir esse delimitador de final de comando - a barra inversa serve apenas para escapar da shell atual e não ser lida como o final do comandofind
. Outro uso possível é o caractere+
, que tem um significado especial no find. Para essa opção o leitor pode pesquisar e encontrar o significado comman find
😄
Casos de uso:
Listar toda a subárvore de diretórios e arquivos do diretório corrente:
find .
Listar apenas subdiretórios a partir do diretório atual:
find . -type d
Listar todos os arquivos que têm nome terminando por sql:
find / -name "*.sql"
Buscando arquivos de forma mais simples - locate, updatedb
O comando locate também pode ser utilizado para pesquisar por arquivos, usando a sintaxe: locate nomedoarquivo
Para executar esses comandos, é necessário instalar o pacote mlocate com o comando:
sudo apt install mlocate -y
Entretanto, o funcionamento do locate
necessita de um banco de dados interno, que grava a localização de todos os arquivos do sistema. Caso um arquivo tenha sido criado recentemente, é necessário atualizar a base de dados com o comando updatedb
, para que o locate tenha sucesso na busca.

Last updated