Linux / Comando ls: listar arquivos, tamanhos e permissões
ls lista arquivos e o conteúdo de diretórios no Linux. Opções como -a, -l e -h permitem incluir itens ocultos e consultar permissões, proprietário, tamanho e data de modificação. Para uma inspeção cotidiana, ls -lah reúne essas informações.
Os exemplos usam GNU Coreutils e sintaxe do Bash. Confira a implementação com ls --version e possíveis aliases com type -a ls, como explica o guia de type. Para processar nomes em scripts, prefira uma interface com separadores inequívocos, como find -print0, em vez de separar a apresentação visual de ls por espaços.
O que é o comando ls?
ls é a abreviação de list, e ele lista informações sobre arquivos especificados ou o conteúdo de um diretório. Em distribuições GNU/Linux, o ls incluído no GNU Coreutils é geralmente usado.
Sem argumentos, ls consulta o diretório atual e normalmente omite nomes iniciados por ponto (.). Um diretório passado como argumento costuma ter seu conteúdo listado; -d muda isso para mostrar a própria entrada. Uma configuração por alias pode acrescentar opções e alterar esse comportamento aparente.
Sintaxe básica
ls [opções]... [arquivos ou diretórios]...
O bloco anterior é uma sinopse: substitua os campos e omita os colchetes. A linha abaixo lista os itens visíveis na pasta em que você está, sem modificar os arquivos. Em um terminal, a apresentação pode usar colunas; quando a saída não é um terminal, GNU ls normalmente usa uma entrada por linha.
ls
Os caminhos abaixo são exemplos usuais de Linux: /var/log para logs, /etc/hosts para um arquivo específico e /etc e /usr/local para dois diretórios. Substitua-os por caminhos existentes quando necessário; a leitura depende de suas permissões.
ls /var/log
ls /etc/hosts
ls /etc /usr/local
Os argumentos identificam os alvos; não use a posição visual de um resultado como identidade do arquivo. A ordenação e a apresentação dependem das opções e da implementação. O conteúdo de cada diretório é normalmente ordenado por nome conforme a localidade, isto é, as regras de idioma e ordenação do ambiente. Se a ordem entre alvos for essencial ao seu trabalho, consulte cada alvo em uma chamada separada.
Exibir arquivos ocultos
Mostrar todos os itens com -a
-a ou --all inclui arquivos e diretórios ocultos que começam com um ponto. Também mostra . representando o diretório atual e .. representando o diretório pai.
ls -a
Excluir . e .. com -A
-A, ou --almost-all, inclui itens ocultos e omite apenas . e ... Não é um filtro de “arquivos de configuração”: inclui qualquer nome oculto, inclusive diretórios.
ls -A
Exibir informações detalhadas com ls -l
-l exibe em formato longo o tipo de arquivo e permissões, número de links físicos, proprietário, grupo, tamanho, hora de modificação e nome.
ls -l
Uma linha típica de saída consiste na seguinte ordem.
| Item | Significado |
|---|---|
| Tipo e permissões | O caractere único para o tipo de arquivo e as permissões de leitura, escrita e execução para o proprietário, grupo e outros. |
| Número de links físicos | Quantidade de nomes que referenciam o mesmo inode, a estrutura que identifica e guarda metadados do arquivo no sistema de arquivos. A contagem de diretórios depende da implementação. |
| Proprietário | O nome ou ID de usuário da conta que possui o arquivo. |
| Grupo | O nome ou ID do grupo ao qual o arquivo pertence. |
| Tamanho | Em arquivos regulares, tamanho lógico normalmente em bytes; opções e ambiente podem mudar a unidade. Arquivos de dispositivo usam campos especiais. |
| Hora | Por padrão, data de modificação dos dados (mtime). |
| Nome | Este é o nome do arquivo. Para links simbólicos, o destino para o qual eles apontam também pode ser exibido. |
Ler os caracteres de permissão
Em -rw-r--r--, o primeiro caractere indica um arquivo regular. Os nove seguintes formam três grupos: proprietário, grupo e demais usuários. r significa leitura, w escrita e x execução; em diretórios, x permite atravessar ou pesquisar o caminho. Um hífen indica a ausência daquela permissão básica. A tabela mostra as posições desse exemplo.
| Localização | Exemplo | Descrição |
|---|---|---|
| Primeiro caractere | -, d, l |
É o tipo como arquivo regular, diretório ou link simbólico. |
| 2º ao 4º | rw- |
As permissões do proprietário. |
| 5º ao 7º | r-- |
As permissões do grupo. |
| 8º ao 10º | r-- |
Esta é a permissão para outros usuários. |
Letras como s, S, t e T também podem aparecer nas posições de execução e representam bits especiais. Um sinal após as permissões, como +, pode indicar uma lista de controle de acesso (ACL) ou outro mecanismo de segurança. Essas permissões básicas não descrevem sozinhas toda decisão de acesso. chmod modifica modos e chown modifica proprietário ou grupo; listar com ls não faz essas mudanças.
Mostrar IDs numéricos com -n
Para verificar o ID numérico em vez do nome de usuário e do nome do grupo, use -n. Isso é útil quando a consulta do nome da conta é lenta ou ao comparar IDs com outro sistema.
ls -ln
Interpretar tamanhos de arquivos
Usar unidades legíveis com -h
-h usa potências de 1024 com sufixos abreviados, como K, M e G: por exemplo, 1.0K corresponde a aproximadamente 1 KiB (1024 bytes). Combine-o com uma coluna de tamanho, como a de -l ou -s. As formas resumidas podem arredondar o valor; para a contagem lógica exata de um arquivo regular, consulte a coluna sem -h.
ls -lh
ls -lah
ls -lah é frequentemente usado em trabalho interativo porque mostra itens ocultos em formato longo.
Exibir o tamanho do bloco alocado com -s
-s mostra a alocação do sistema de arquivos à esquerda do nome. Normalmente a unidade é um bloco de 1024 bytes, mas opções e variáveis de ambiente podem mudá-la; com -h, a alocação ganha unidades legíveis. Em ls -lsh, essa coluna é diferente do tamanho lógico da coluna longa. Arquivos esparsos, compressão e o sistema de arquivos podem fazer os dois valores diferirem.
ls -sh
ls -lsh
Para resumir o espaço total ocupado por um diretório inteiro, du é mais adequado do que ls.
A referência de comandos Linux reúne ferramentas para consultar arquivos e processos. Para diferenças de uso de espaço, o guia de du aprofunda a comparação entre tamanho lógico e alocação.
Mudar a ordem de exibição
Por padrão, os nomes seguem as regras de ordenação da localidade. As opções seguintes permitem ordenar por data de modificação, tamanho ou versão. Use o mesmo conjunto de arquivos e altere uma opção por vez para comparar os resultados.
Ordenar por modificação com -t
ls -lt
ls -lat
-t ordena pela modificação mais recente por padrão. Compare ls -lt com ls -ltr sobre a mesma pasta para inverter a ordem. Modificação recente não é prova de criação recente: um arquivo antigo pode ter sido alterado agora.
Ordenar por tamanho com -S
ls -lhS
-S classifica por tamanho de arquivo em ordem decrescente. O tamanho exibido nas listas de diretório não é a soma do conteúdo, então use du para comparar o uso do disco.
Inverter a ordem e ordenar por versão: -r e -v
ls -ltr
ls -1v
-r reverte a ordem de classificação atual. Portanto, ls -ltr mostra as entradas da mais antiga para a mais nova. -v realiza uma ordenação por versão que considera partes numéricas, então file2 vem antes de file10.
Distinguir diretórios e consultar suas entradas
Acrescentar indicadores de tipo com -F
-F ou --classify adiciona indicadores de tipo como / para diretórios, * para arquivos executáveis, e @ para links simbólicos.
ls -F
Esses indicadores não fazem parte dos nomes reais dos arquivos. Ao determinar o tipo em scripts, não remova esses caracteres; use operadores de teste de arquivo ou find em vez disso.
Mostrar o diretório em vez do conteúdo com -d
Se você especificar um nome de diretório, ele mostrará o conteúdo por padrão. Para ver as permissões e horários da própria entrada do diretório, use -d em conjunto.
ls -ld /var/log
ls -d */
Em Bash com as configurações padrão, o shell expande */ para caminhos de subdiretórios visíveis, podendo incluir links que apontam para diretórios. Diretórios ocultos dependem de opções como dotglob. Se não houver correspondências, o padrão pode permanecer literal e gerar uma mensagem sobre */. Isso não é um método universal para obter somente diretórios reais; verifique o tipo quando essa distinção importar.
Agrupar diretórios primeiro
ls --group-directories-first
--group-directories-first agrupa subdiretórios antes dos demais itens e aplica a ordenação escolhida dentro de cada grupo. A opção GNU não é universal e deixa de ter efeito com -U, que desativa a ordenação.
Listar subdiretórios recursivamente
ls -R /etc
-R ou --recursive segue os subdiretórios e continua exibindo seu conteúdo. Se a árvore for grande, a saída pode ser muito longa e muitos erros de permissão podem ocorrer.
Para encontrar arquivos por um nome específico ou condição, é mais eficiente usar find do que escanear toda a lista visualmente.
find /etc -type f -name '*.conf'
Escolher datas e formatos
Consultar atime e ctime
ls -l mostra a data de modificação dos dados (mtime). ls -lu troca a data exibida pela do último acesso (atime), e ls -lc pela de mudança de estado dos metadados (ctime), mantendo a ordenação por nome nesses dois exemplos. Com -t, ls -ltu e ls -ltc também ordenam pela data selecionada.
ls -lu
ls -lc
ls -ltu
ls -ltc
No Linux, ctime não é a data de criação: registra mudanças do estado do arquivo, como modo, proprietário, links e alterações de dados. A atualização de atime pode ser limitada por políticas de montagem e pelo sistema de arquivos; uma leitura não garante uma mudança imediatamente observável. Em outras plataformas, emulações desses campos podem ter semântica diferente.
Usar um formato de data consistente
Com o GNU ls, você pode usar --time-style para selecionar um formato de data longo.
ls -l --time-style=long-iso
ls -l --time-style=full-iso
ls -l --time-style='+%Y-%m-%d %H:%M:%S'
long-iso mostra data e hora até minutos; full-iso inclui fração de segundo e deslocamento do fuso horário. Isso não cria precisão que o sistema de arquivos não possua. A variável TZ e a localidade afetam a apresentação. Para comparar relatórios, defina o mesmo fuso e formato; uma data com segundos omitidos pode esconder diferenças menores.
Cores e representação dos nomes
Usar cores
ls --color=auto
--color=auto pede cores quando a saída é um terminal; em um pipe ou arquivo, essa opção normalmente não emite cores. Algumas configurações de distribuição a adicionam por alias. As linhas abaixo inspecionam a resolução de ls e seu alias: uma mensagem de alias inexistente é normal se nenhum foi definido.
type ls
alias ls
As cores são influenciadas pela variável de ambiente LS_COLORS e pelas configurações dircolors. Ao salvar em um arquivo ou passar para outros comandos, você pode usar --color=never para evitar incluir caracteres de controle desnecessários.
Nomes de arquivos com espaços e caracteres especiais
ls pode exibir nomes de arquivos contendo espaços ou caracteres de controle em formato entre aspas ou com escape, dependendo do terminal e das opções. Você não deve presumir que a string exibida sempre corresponda ao nome real do arquivo.
ls -Q
ls --quoting-style=shell-escape
-Q envolve nomes de arquivos com aspas duplas. --quoting-style é uma extensão GNU, útil para que os humanos identifiquem caracteres especiais, mas não substitui um formato seguro de processamento automático.
Combinações úteis
| Comando | Propósito |
|---|---|
ls -la |
Exibe informações detalhadas, incluindo itens ocultos. |
ls -lah |
Exibe itens ocultos e informações detalhadas em unidades de tamanho legíveis por humanos. |
ls -lhS |
Exibe informações detalhadas começando com arquivos grandes. |
ls -ltr |
Exibe em formato longo a partir do tempo de modificação mais antigo. |
ls -ld */ |
Exibe informações de subdiretórios no local atual. |
ls -1 |
Exibe itens um por linha. |
ls -1v |
Ordena linha por linha considerando números de versão. |
ls -l --time-style=long-iso |
Exibe em um formato que facilite a comparação de datas e horários. |
Resumo das principais opções
| Opção | Descrição |
|---|---|
-a, --all |
Exibe itens ocultos incluindo . e ... |
-A, --almost-all |
Exibe itens ocultos, exceto . e ... |
-l |
Exibe em formato longo incluindo permissões, proprietário, tamanho e horário. |
-h, --human-readable |
Exibe o tamanho em unidades legíveis por seres humanos. |
-d, --directory |
Exibe a própria entrada do diretório em vez do conteúdo do diretório. |
-R, --recursive |
Exibe de forma recursiva incluindo subdiretórios. |
-t |
Ordena por tempo de modificação mais recente por padrão. |
-S |
Ordena pelo tamanho do arquivo em ordem decrescente. |
-r, --reverse |
Inverte a ordem de classificação atual. |
-v |
Classifica na ordem das versões considerando a parte numérica do nome do arquivo. |
-F, --classify |
Acrescenta um caractere indicando o tipo de arquivo após o nome. |
-1 |
Exibe apenas um item por linha. |
Processar nomes de arquivos em scripts
Nomes de arquivos no Linux podem conter espaços, tabulações e quebras de linha. ls altera colunas, cores e formas de aspas para torná-lo legível para humanos no terminal, então scripts que separam por linhas ou espaços podem lidar incorretamente com arquivos.
Um byte nulo (NUL) pode separar nomes sem se confundir com espaços ou quebras de linha. O laço abaixo exige GNU find para -maxdepth e Bash para read -d ''. Ele lê arquivos regulares do diretório atual, sem descer nos subdiretórios, e os imprime mantendo NUL como separador.
find . -maxdepth 1 -type f -print0 | while IFS= read -r -d '' file; do
printf '%s\0' "$file"
done
O bloco não modifica arquivos. A saída contém NUL e deve ir para um consumidor compatível, não ser dividida novamente por linhas. O corpo do laço mostra onde executar uma operação sobre "$file", sempre entre aspas. Verifique também falhas do produtor do pipeline ao automatizar. Versões GNU que oferecem ls --zero também permitem saída separada por NUL; confirme ls --help, pois versões antigas podem não ter a opção. Para metadados específicos, consulte stat.
Problemas comuns
Mensagem Permission denied
Confirme a permissão de pesquisa (x) nos componentes do caminho e a de leitura (r) no diretório listado; a consulta dos metadados das entradas também depende da travessia. ls -ld caminho e, onde disponível, namei -l caminho ajudam a localizar o componente relevante. ACL, políticas de segurança e diretórios remotos também podem restringir o acesso. Peça somente a permissão necessária, em vez de assumir que elevar privilégios seja a solução.
Ordenação diferente da esperada
A categoria de localidade LC_COLLATE influencia a ordenação por nome. Para uma ordem de bytes reproduzível nessa execução, use LC_ALL=C como na linha abaixo; isso não altera permanentemente a configuração do shell.
LC_ALL=C ls
Mensagem Argument list too long
No ls *, o asterisco é expandido pelo shell em inúmeros nomes de arquivos antes de ls ser executado, não pelo ls em si. Se exceder o limite de tamanho de argumento do sistema operacional, o erro ocorre antes que o comando comece. Para uma lista simples, execute apenas ls, e para buscas condicionais ou processamento em lote, use find com -exec ou um pipeline separado por NUL.
Perguntas frequentes
No comando ls -l, o tamanho do diretório é a soma dos arquivos internos?
Não. É o tamanho lógico do objeto diretório informado pelo sistema de arquivos, relacionado ao armazenamento das entradas e dependente da implementação. Não é a soma dos arquivos internos nem o tamanho de toda a estrutura inode. Para uso de espaço pela árvore, consulte du -sh diretório, considerando também as regras de links e pontos de montagem de du.
Qual é a diferença entre ls -a e ls -A?
-a mostra todos os itens ocultos, incluindo . e ... -A mostra itens ocultos, mas exclui essas duas entradas de diretório especiais.
Como posso ver primeiro os arquivos modificados mais recentemente?
Use ls -lt para ordenar por data de modificação, da mais recente para a mais antiga, em formato longo. ls -ltr inverte essa ordem. Se os horários forem iguais, não interprete a posição como uma diferença temporal comprovada.




