Você está procurando uma maneira de organizar seus arquivos e realizar algumas operações neles? Existem muitas instâncias na programação onde você precisa ordenar alguns dados, como uma lista de arquivos. Ordenar arquivos com os comandos sort
e ls
do Bash irá ajudá-lo a manter as coisas organizadas.
Neste tutorial, você aprenderá os fundamentos de ordenar arquivos e conteúdo de arquivos.
Vamos começar a ordenar!
Pré-requisitos
Este tutorial usa Ubuntu 20.04, mas qualquer distribuição Linux funcionará.
Ordenando Arquivos Alfabeticamente com Bash
Há várias maneiras de ordenar arquivos no Linux, mas vamos direto para a mais comum, ordenando arquivos alfabeticamente.
Inicie o seu terminal e execute o comando ls -l
abaixo para obter uma lista de arquivos em um diretório em ordem crescente. A flag -l
diz 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 flag-r
para o comandols -l
, assim:ls -lr
. Passar a flag-r
para o comandols -l
se aplica a outros exemplos neste tutorial.
Usando o Bash para Ordenar Arquivos por Tamanho
Em vez de classificar os arquivos alfabeticamente, você pode querer classificá-los pelo tamanho do arquivo. A classificação por tamanho de arquivo é útil ao priorizar a visualização dos menores ou maiores arquivos em uma lista.
Para classificar os arquivos por tamanho, passe a flag -S
para informar ao comando ls
para classificar a lista de arquivos por tamanho do arquivo.
Execute o comando abaixo para listar os arquivos (ls
) classificados por tamanho do arquivo em um formato de lista longa (-lS
).
Abaixo, você pode ver que o comando classificou 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

Classificar Arquivos por Tempo de Modificação usando o comando Bash Sort
Avançando na classificação dos arquivos por tamanho, você pode encontrar um caso de uso em que precise classificar os arquivos pelo tempo em que foram modificados. Por exemplo, você esqueceu o nome do arquivo que criou e só se lembra do momento em que o arquivo foi modificado pela última vez.
Execute o comando abaixo, onde o parâmetro -t
informa ao comando ls
para classificar os arquivos por tempo de modificação.

Classificar Arquivos por Extensão de Arquivo
Quando você está procurando um arquivo com um tipo de arquivo específico, classificar 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 classificar com base em suas extensões (-lx
).
Observe abaixo que o comando classificou os arquivos com a mesma extensão em ordem ascendente com base em seus nomes.

Classificação de Conteúdo em um Arquivo de Texto
A esta altura, você já aprendeu vários métodos para ordenar os arquivos em um diretório. Mudando seu foco do comando ls
, tente executar o comando sort
. O comando sort
ordena o conteúdo do arquivo dependendo da bandeira que você irá adicionar. Mas primeiro, você precisa de um arquivo com o conteúdo que você vai modificar.
Execute o comando abaixo para criar um arquivo de texto chamado ~/data/frutas.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 sort
cada palavra em frutas.txt
.
Abaixo, você pode ver que o conteúdo do arquivo está ordenado em ordem ascendente.

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

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 você 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 em seu arquivo de texto.

Ordenação Bash para Encontrar e Ordenar Arquivos por Extensão
Você tem executado comandos únicos (ou ls
ou sort
) nos exemplos anteriores. Mas na programação, você pode precisar frequentemente usar dois ou mais comandos juntos. Como? Através da interligação de um comando com outro.
Execute o comando abaixo para encontrar
todos os arquivos markdown (-iname "*.md"
) no diretório de trabalho (.
), e classificá-los em ordem alfabética descendente (sort -r
). Tente encontrar e classificar 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 na saída padrão no console, adicione a opção
--output
, assim:find . -iname "*.md" | sort -r --output=sorted.txt
. A opção--output
informa ao comandosort
para criar um arquivo de saída para a lista ordenada de arquivos.
Conclusão
O objetivo deste artigo foi ensinar sobre diferentes maneiras de ordenar usando comandos Bash em uma máquina Linux. Você agora aprendeu a ordenar a listagem de arquivos e o conteúdo de arquivos. Além disso, você também deve saber como encadear diferentes comandos para uma classificação de arquivo mais complexa.
Com esse conhecimento recém-adquirido como ponto de partida, por que não criar scripts para automatizar listas de arquivos e a classificação de conteúdo de arquivos?