Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Curso de Inglês Online

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Listagem de diretórios e arquivos com o comando ls

Colaboração: Rafael Moraes da Costa

Data de Publicação: 08 de setembro de 2010

O ls é um dos comandos mais conhecidos e utilizados em sistemas Unix-like. Em sua forma mais simples, lista o conteúdo de determinado diretório, contudo, com as opções certas, é capaz de prover informações que vão além da listagem de arquivos.

Vejamos algumas explicações seguidas por exemplos do ls e suas opções.

Mostrar tipos de arquivos; Para descobrir rapidamente quais tipos de arquivos estão armazenados em determinado diretório, basta utilizar a opção abaixo. Onde (/) está para diretórios, (*) para arquivos executáveis e (@) para links simbólicos:

  $ ls -F
  dir/  exec@  exec.sh*

Listar conteúdo de um determinado diretório e de todos sub-diretórios; Esta opção é útil quando é necessário identificar arquivos e diretórios, elimina a necessidade de uma busca diretório por diretório ou até mesmo da utilização de ferramentas de busca como find ou locate:

  $ ls -R dir/
  dir/:
  dir1
  
  dir/dir1:
  file1

Listagem quase completa, porém oculta a representação do diretório corrente (.) e do diretório pai (..):

  $ ls -A
  .bash_history  .bash_logout  .bash_profile  .bashrc  dir  dir2  exec  exec.sh  .hidden  .ssh

Listar arquivos ocultos; Utilizando esta opção, todos arquivos são mostrados inclusive os ocultos. Os arquivos e diretórios ocultos são precedidos por um ponto (.):

  $ ls -a
  .bash_logout  .bash_profile  .bashrc

Listar arquivos detalhadamente; Com esta opção pode-se visualizar informações mais detalhadas.

A primeira coluna detalha as permissões do arquivo ou diretório e ainda informa o tipo do arquivo*, nota-se no exemplo drwxr-xr-x que se trata de um diretório (d), com permissão rwxr-xr-x 755, portanto o usuário dono tem permissão para leitura, escrita e execução, o grupo e outros tem permissão de leitura e execução, a segunda é a quantidade de links ou diretórios, a terceira e quarta mostram o usuário dono e grupo dono respectivamente, na quinta coluna temos o tamanho em bytes (Quando é um diretório este valor representa o número de blocos usados pelo diretório para armazenar as informações sobre seu conteúdo), depois a data e hora da última modificação e por fim o nome (quando se trata de um link simbólico, o nome do link aponta para o arquivo original, como demonstrado abaixo):

  $ ls -l
  total 12
  drwxr-xr-x 3 rafael rafael 4096 Ago 29 14:00 dir
  drwxr-xr-x 2 rafael rafael 4096 Ago 29 14:17 dir2
  lrwxrwxrwx 1 rafael rafael    7 Ago 29 13:57 exec -> exec.sh
  -rwxr-xr-x 1 rafael rafael   19 Ago 29 13:56 exec.sh

Tipos de Arquivos

-rwxr-xr-x Arquivo comum
drwxr-xr-x Diretório
lrwxr-xr-x Link Simbólico
brwxr-xr-x Arquivo de dispositivo - Bloco ( Block device file )
crwxr-xr-x Arquivo de dispositivo - Caracter ( Character device file )
prwxr-xr-x FIFO ( First in First Out - Named Pipe )
srwxr-xr-x Socket

Listar arquivos de forma mais inteligível; Esta opção mostra uma saída mais legível, os tamanhos são apresentados em Bytes, Kilobytes, Megabytes e etc. Não sendo necessário a converção de bytes para Megabytes e outras unidades:

  $ ls -lh
  total 12K
  drwxr-xr-x 3 rafael rafael 4,0K Ago 29 14:00 dir
  drwxr-xr-x 2 rafael rafael 4,0K Ago 29 14:17 dir2
  lrwxrwxrwx 1 rafael rafael    7 Ago 29 13:57 exec -> exec.sh
  -rwxr-xr-x 1 rafael rafael   19 Ago 29 13:56 exec.sh

Listar um diretório detalhadamente, mas sem apresentar o conteúdo; Normalmente quando se lista um diretório o comando ls é usado tendo como único argumento o diretório (ls dir) e todo o conteúdo do diretório é mostrado:

  $ ls -ld dir
  total 4
  drwxr-xr-x 2 rafael rafael 4096 Ago 29 14:00 dir1

Listar arquivos ordenados por data e hora com os mais novos em primeiro:

  $ ls -lt
  total 12
  drwxr-xr-x 2 rafael rafael 4096 Ago 29 14:17 dir2
  drwxr-xr-x 3 rafael rafael 4096 Ago 29 14:00 dir
  lrwxrwxrwx 1 rafael rafael    7 Ago 29 13:57 exec -> exec.sh
  -rwxr-xr-x 1 rafael rafael   19 Ago 29 13:56 exec.sh

Listar arquivos ordenados por data e hora, desta vez com os mais antigos em primeiro:

  $ ls -ltr
  total 12
  -rwxr-xr-x 1 rafael rafael   19 Ago 29 13:56 exec.sh
  lrwxrwxrwx 1 rafael rafael    7 Ago 29 13:57 exec -> exec.sh
  drwxr-xr-x 3 rafael rafael 4096 Ago 29 14:00 dir
  drwxr-xr-x 2 rafael rafael 4096 Ago 29 14:17 dir2

Listar sem apresentar o dono e grupo; As opções -g ( não mostra o dono ) e -G ( não mostra o grupo ), deixam a saída mais compacta:

  $ ls -lgG
    total 12
    drwxr-xr-x 3 4096 Ago 29 14:00 dir
    drwxr-xr-x 2 4096 Ago 29 14:17 dir2
    lrwxrwxrwx 1    7 Ago 29 13:57 exec -> exec.sh
    -rwxr-xr-x 1   19 Ago 29 13:56 exec.sh

Omitir arquivo ou diretório especificado no comando:

  $ ls -I dir
    dir2  exec  exec.sh

Listar com o número de inode dos respectivos arquivos e diretórios:

  $ ls -i
    780307 dir  780313 dir2  780308 exec  780309 exec.sh

Listar arquivos e diretórios entre aspas:

  $ ls -Q
    "dir"  "dir2"  "exec"  "exec.sh"

Listar por ordem de tamanho:

Decrescente:

  $ ls -Sl
    total 12
    drwxr-xr-x 3 rafael rafael 4096 Ago 29 14:00 dir
    drwxr-xr-x 2 rafael rafael 4096 Ago 29 14:17 dir2
    -rwxr-xr-x 1 rafael rafael   19 Ago 29 13:56 exec.sh
    lrwxrwxrwx 1 rafael rafael    7 Ago 29 13:57 exec -> exec.sh

Crescente:

  $ ls -Srl
  total 12
  lrwxrwxrwx 1 rafael rafael    7 Ago 29 13:57 exec -> exec.sh
  -rwxr-xr-x 1 rafael rafael   19 Ago 29 13:56 exec.sh
  drwxr-xr-x 2 rafael rafael 4096 Ago 29 14:17 dir2
  drwxr-xr-x 3 rafael rafael 4096 Ago 29 14:00 dir

Mostrar horário do último acesso:

  $ ls -ul
    total 12
    drwxr-xr-x 3 rafael rafael 4096 Ago 29 19:18 dir
    drwxr-xr-x 2 rafael rafael 4096 Ago 29 19:18 dir2
    lrwxrwxrwx 1 rafael rafael    7 Ago 29 19:49 exec -> exec.sh
    -rwxr-xr-x 1 rafael rafael   19 Ago 29 19:49 exec.sh

Listar um arquivo por linha:

  $ ls -1
    dir
    dir2
    exec
    exec.sh

Estes exemplos são extremamente úteis no cotidiano de um administrador de sistemas. O ls é simples e com as opções, extremamente funcional e por vezes elimina a necessidade de usar outros comandos.

Em suma, com criatividade é possível criar diversas combinações facilitadoras fazendo com que as tarefas sejam mais dinâmicas e rápidas.

Rafael Moraes, é Analista de Suporte e Infraestrutura para sistemas Linux e também Instrutor em cursos preparatórios LPI. Possui as certificações LPIC-1, LPIC-2, ITIL Foundations e CISCO CCDA.

Veja a relação completa dos artigos de Rafael Moraes da Costa

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.02/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1077 votos)

Opinião dos Leitores

Taf
08 Set 2010, 10:22
Boa, valeu!

Seria bom a tradução do manual do ls
ex:
$ ls --help
$ man help

igual já existem para alguns comandos como o proprio man, veja:
$ man man

Até+
Aurélio Jargas
08 Set 2010, 09:47
Parabéns Rafael, ficou muito bom o seu artigo. Conseguiu transmitir muita informação num texto conciso e recheado de exemplos. Ficou leve de ler, facinho de ir até o final sem cansar. E ainda me ensinou sobre o -A que eu não conhecia :)
Hélio
08 Set 2010, 08:44
Essa dica foi muito boa mesmo, uma dica para quem precisa de dicas. Valeu.
Murilo Fujita
08 Set 2010, 08:31
Muito bom! Com certeza será útil. Parabéns!
O autor ou alguém poderia dar uma explicação sobre o que é o inode. Nunca entendi esse conceito.
Obrigado!
Sharrukin
08 Set 2010, 03:08
Eu venho procurando um meio de fazer com que a listagem completa de determinado diretório seja feita com o path completo; tipo:
~$ ls /usr/bin

/usr/bin/ash
/usr/bin/bash
/usr/bin/kash
/usr/bin/lash
/usr/bin/nash
Mas nenhuma das opções do ls (a man page parece que não ajudou muito... ) me pareceu dar esta opção sem eu ter que "recortar e colar" com algum comando externo.
Buruno
05 Set 2010, 11:50
As parâmetros -u e -S são muito úteis! Valeu!
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Guia Manga Universo