Você está procurando uma maneira de organizar seus arquivos e realizar algumas operações sobre eles? Existem muitas instâncias na programação em que você precisa classificar alguns dados, como uma lista de arquivos. Classificar arquivos com os comandos sort
e ls
do Bash ajudará a manter as coisas organizadas.
Neste tutorial, você aprenderá os fundamentos da ordenação de arquivos e conteúdos de arquivos.
Vamos começar a ordenar!
Pré-requisitos
Este tutorial usa o Ubuntu 20.04, mas qualquer distribuição Linux funcionará.
Ordenar Arquivos Alfabeticamente no Bash
Há muitas maneiras de ordenar arquivos no Linux, mas vamos nos concentrar na maneira mais comum, que é ordenar arquivos alfabeticamente.
Inicie seu terminal e execute o comando ls -l
abaixo para obter uma lista de arquivos em um diretório em ordem crescente. A bandeira -l
informa ao comando ls
para imprimir a saída retornada em um formato de lista longa.

Por padrão, o comando
ls
lista os arquivos em ordem crescente. Para reverter a ordem de classificação, passe a bandeira-r
para o comandols -l
, como este:ls -lr
. Passar a bandeira-r
para o comandols -l
se aplica a outros exemplos neste tutorial.
Usando o Bash Sort para Ordenar Arquivos por Tamanho
Em vez de ordenar os arquivos alfabeticamente, você pode querer ordená-los por tamanho do arquivo. Ordenar os arquivos por tamanho é útil quando se prioriza ver os arquivos menores ou maiores em uma lista.
Para ordenar os arquivos por tamanho, passe a flag -S
para dizer ao comando ls
para ordenar a lista de arquivos por tamanho do arquivo.
Execute o comando abaixo para listar os arquivos (ls
) ordenados por tamanho do arquivo em um formato de lista longa (-lS
).
Abaixo, você pode ver que o comando ordenou os arquivos por tamanho em ordem decrescente (do maior para o menor em tamanho).
Para reverter a ordem de classificação (do menor para o maior), adicione a flag
-r
, assim:ls -lSr

Ordenar Arquivos por Tempo de Modificação via Ordenação Bash
Avançando a partir da ordenação de arquivos por tamanho, você pode encontrar um caso de uso em que precise ordenar os arquivos pelo tempo em que foram modificados. Por exemplo, você esqueceu o nome do arquivo que criou e só lembra o momento em que modificou o arquivo.
Execute o comando abaixo onde o parâmetro -t
diz ao comando ls
para ordenar os arquivos por tempo de modificação.

Ordenação de Arquivos por Extensão de Arquivo
Ao procurar por um arquivo com um tipo de arquivo específico, ordenar os arquivos por extensão de arquivo é a solução ideal.
Execute o comando abaixo para listar os arquivos (ls
) no diretório de trabalho e ordená-los com base em suas extensões (-lx
).
Observe abaixo que o comando ordenou os arquivos com a mesma extensão em ordem ascendente com base em seus nomes.

Ordenando Conteúdos em um Arquivo de Texto
Até agora, você aprendeu vários métodos para classificar os arquivos em um diretório. Mudando seu foco do comando ls
, tente executar o comando sort
. O comando sort
classifica o conteúdo do arquivo dependendo da bandeira que você adicionará. Mas primeiro, você precisa de um arquivo com o conteúdo que você modificará.
Execute o comando abaixo para criar um arquivo de texto chamado ~/data/fruits.txt que contém nomes de frutas. A bandeira -e
permite a interpretação da barra invertida para escrever cada palavra em uma nova linha (\n
).
Agora execute o comando abaixo para classificar
cada palavra em fruits.txt
.
Abaixo, você pode ver o conteúdo do arquivo ordenado em ordem ascendente.

Sem nenhuma bandeira, o comando
sort
classifica o conteúdo do arquivo em ordem ascendente por padrão. Para inverter a ordem de classificação, adicione a bandeira-r
ao comando de classificação, assim:sort -r fruits.txt
. A classificação em ordem inversa adicionando a bandeira-r
se aplica a outros exemplos neste tutorial.
Classificando uma Lista de Números em um Arquivo de Texto
O comando para classificar números é semelhante à classificação de textos em um arquivo, mas você adicionará a bandeira -n
em vez disso. Vamos criar um arquivo primeiro para demonstrar como classificar numericamente o conteúdo de um arquivo.
Execute o comando abaixo para criar um arquivo chamado ~/data/scores.txt que contém números aleatórios, cada um em uma nova linha.
Agora execute o comando abaixo para classificar
os números (-n
) no arquivo ~/data/scores.txt.
Você pode ver abaixo os números listados em linhas, começando do menor para o maior.

Ordenando uma Lista de Números de Versão em um Arquivo de Texto
Talvez você tenha uma lista de números de versão em um arquivo de texto que deseja ordenar. Se for o caso, adicionar a opção --version-sort
resolverá o problema.
Para demonstrar como a opção --version-sort
funciona, crie primeiro um arquivo de texto.
Execute o comando abaixo para criar um arquivo de texto chamado ~/data/versions.txt com números de versão aleatórios listados, cada um em uma nova linha (\n
).
Agora execute o comando abaixo para ordenar
os números de versão (--version-sort
) no arquivo versions.txt. A opção --field-separator
informa ao comando sort
que os números em cada versão são separados por um ponto (.
). Você pode alterar o separador de campo para qualquer caractere que separe os números nas versões listadas no seu arquivo de texto.

Ordenar Arquivos por Extensão usando Bash
Você tem executado comandos únicos (seja ls
ou sort
) nos exemplos anteriores. Mas na programação, você pode precisar frequentemente usar dois ou mais comandos juntos. Como? Utilizando pipelines para encadear um comando ao outro.
Execute o comando abaixo para encontrar
todos os arquivos markdown (-iname "*.md"
) no diretório de trabalho (.
) e ordená-los em ordem alfabética descendente (sort -r
). Tente encontrar e ordenar outros arquivos alterando "*.md"
para outra extensão de arquivo.

Se preferir salvar a saída ordenada em um arquivo de texto em vez de saída padrão no console, adicione a opção
--output
, assim:find . -iname "*.md" | sort -r --output=sorted.txt
. A opção--output
diz ao comandosort
para criar um arquivo de saída para a lista ordenada de arquivos.
Conclusão
O objetivo deste artigo foi te ensinar sobre diferentes formas de ordenação usando comandos Bash em uma máquina Linux. Agora você aprendeu a ordenar a listagem de arquivos e ordenar o conteúdo de arquivos. Além disso, você também deve saber como encadear diferentes comandos para uma ordenação de arquivos mais complexa.
Com esse conhecimento recém adquirido como um ponto de partida, por que não criar scripts para automatizar listas de arquivos e ordenação de conteúdo de arquivos?