Comando Linux ls: Listar Arquivos e Diretórios

O comando ls no Linux exibe uma lista de arquivos e subdiretórios em um diretório. Usando ls -la, você pode ver informações detalhadas incluindo itens ocultos, permissões, proprietário, tamanho e hora da modificação.

Liste o diretório atual ou um caminho especificado

Executar o seguinte comando no terminal exibe os itens no diretório de trabalho atual. A localização atual pode ser verificada com pwd.

pwd
ls

Para visualizar o conteúdo de outro diretório, especifique o caminho. Você pode usar tanto caminhos absolutos quanto caminhos relativos com base na localização atual.

ls /var

Por padrão, itens ocultos cujo nome começa com um ponto são excluídos da lista. O nome e a ordem de exibição dependem do sistema e das configurações de localidade. ls é um comando para ler a lista e não exclui ou modifica arquivos.

Visualizar itens ocultos e informações detalhadas

-a inclui nomes que começam com um ponto, e -l exibe em formato detalhado. Você pode usar ambas as opções juntas.

ls -a
ls -l
ls -la

ls -a também mostra . para o diretório atual e .. para o diretório pai. O GNU ls -A exibe itens ocultos, mas omite essas duas entradas. Para exibir tamanhos em unidades legíveis para humanos, adicione -h à lista detalhada.

ls -lah

Por exemplo, pode ser exibido como 1K, 2M. A saída varia dependendo dos arquivos de destino e das configurações do sistema.

Lendo uma lista detalhada

O seguinte é um exemplo mostrando um arquivo regular. Formato de data, nomes e números variam dependendo do ambiente real.

-rw-r--r-- 1 user group 12 Jan 15 10:30 notes.txt
  • -rw-r--r--: O primeiro caractere - é um arquivo comum, e os restantes indicam as permissões para o proprietário, grupo e outros. Se começar com d, é um diretório; se começar com l, é um link simbólico.
  • 1 user group: Número de links físicos, proprietário e grupo proprietário.
  • 12: Tamanho do arquivo (em bytes) na lista detalhada básica. Usar -h mudará para uma unidade de fácil leitura.
  • Jan 15 10:30 notes.txt: Por padrão, o tempo da última modificação e nome. O formato da saída depende da localidade e das opções.

O tamanho listado de um diretório não é a soma dos tamanhos dos arquivos dentro dele. Para verificar o uso de disco de todo o diretório, use uma ferramenta como du. O alvo do link geralmente é mostrado na forma name -> target na lista detalhada.

Verificando a ordenação e o próprio diretório

-t ordena, por padrão, a partir do horário de modificação mais recente. Usar -r junto irá inverter a ordem.

ls -lt
ls -ltr

Para verificar as permissões e o proprietário do próprio diretório, e não da lista interna, use -d.

ls -ld /var

-R lista recursivamente também os subdiretórios, então a saída pode ser grande para árvores de diretórios grandes. Consulte Manual do GNU ls ou man ls para significados detalhados das opções.

Reduzindo a lista com um padrão de nome

No Bash, o asterisco * é um padrão de nome que corresponde a zero ou mais caracteres. O seguinte comando encontra itens em /etc cujos nomes terminam com .conf.

ls -d /etc/*.conf

O shell primeiro expande os nomes que correspondem ao padrão e depois os passa para ls. Como -d foi inserido, ele mostra o nome do diretório em si, mesmo quando um item correspondente é um diretório. Nas configurações típicas do Bash, itens ocultos que começam com um ponto não correspondem automaticamente. Se não houver nomes correspondentes, o resultado pode variar dependendo das opções do shell, como um erro ou o padrão sendo passado como está.

Se o caminho contiver espaços, coloque o caminho entre aspas como ls "my folder". Em geral, se você colocar entre aspas até mesmo o padrão, o shell não expande o asterisco. Para mais detalhes, veja Documento de expansão de nomes de arquivos do Bash.

Verificando dispositivos de disco e erros

ls -l /dev/sd* pode mostrar uma lista que corresponda a arquivos de dispositivo começando com o nome sd. No entanto, nem todos os discos e partições usam esse nome. Outros dispositivos, como NVMe, podem não aparecer na lista, então é mais apropriado usar lsblk ao examinar dispositivos de bloco e sua hierarquia.

lsblk

Se a lista não aparecer ou Permission denied for exibido, verifique a existência do caminho e as permissões de acesso. Se a saída for diferente do esperado, verifique o alias do shell como type ls e também revise as descrições das opções da distribuição e ls --help.