Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

Listando o conteúdo de diretórios

Sobre

Lista o conteúdo do diretório.

Descrição

O programa 'ls' lista informações sobre arquivos (de qualquer tipo, incluindo Diretórios). Opções e argumentos de arquivo podem ser misturados arbitrariamente, como sempre. Se nenhum argumento de opção estiver presente, o argumento padrão '.' (diretório atual) é assumido.

Para mais informações consulte o manual: ls(1)


Uso

ls [OPÇÃO]... [ARQUIVO]...

Exemplos

1. Listando o conteúdo do diretório em formato de lista longa.
SHAMAN@shellscriptx:~$ ls -l
total 48
drwxr-xr-x 2 SHAMAN SHAMAN 4096 Jan 20 09:26 Área de Trabalho
drwxr-xr-x 2 SHAMAN SHAMAN 4096 Jan 20 09:33 Documentos
drwxr-xr-x 2 SHAMAN SHAMAN 4096 Jan 20 09:26 Downloads
drwxr-xr-x 2 SHAMAN SHAMAN 4096 Jan 20 09:31 Imagens
drwxr-xr-x 2 SHAMAN SHAMAN 4096 Jan 20 09:26 Modelos
drwxr-xr-x 2 SHAMAN SHAMAN 4096 Jan 20 09:31 Música
drwxr-xr-x 2 SHAMAN SHAMAN 4096 Jan 20 09:26 Público
-rw-rw-r-- 1 SHAMAN SHAMAN   22 Jan 20 09:34 service1.log
-rw-rw-r-- 1 SHAMAN SHAMAN   22 Jan 20 09:34 service2.log
-rw-rw-r-- 1 SHAMAN SHAMAN   22 Jan 20 09:34 service3.log
-rw-rw-r-- 1 SHAMAN SHAMAN   22 Jan 20 09:34 service4.log
drwxr-xr-x 2 SHAMAN SHAMAN 4096 Jan 20 09:26 Vídeos
Como o parâmetro 'diretório' foi omitido, o comando assume o diretório atual; Onde é listado todos os arquivos com suas informações dividas em colunas contendo: Permissões, modo do arquivo, o número de ligações para o arquivo, o nome do proprietário, o nome do grupo, o tamanho do arquivo (em bytes), o rótulo de tempo e o nome do arquivo.
 
2. Listando somente os diretórios.
SHAMAN@shellscriptx:~$ ls -d */
Área de Trabalho/  Downloads/  Modelos/  Público/
Documentos/        Imagens/    Música/   Vídeos/
O parâmetro '-d' informa ao comando 'ls' para listar os diretórios exceto os seus conteúdos. O uso da expressão '*/' indica que queremos os arquivos com qualquer nome seguido da '/' (barra), caracterizado como diretório.
 
3. Listando o conteúdo do diretório pai.
SHAMAN@shellscriptx:~$ ls ../
juliano  SHAMAN
O caractere implícito '..' (dois pontos) significa diretório pai da pasta atual. Como o meu diretório atual é '/home/SHAMAN', o comando ls sobe um nível e lista o conteúdo do diretório '/home'.

4. Listando o conteúdo de um determinado diretório.
SHAMAN@shellscriptx:~$ ls Música/
After Forever - Prisión of Desire (Full Album)-0H_FNur8KD0.mp3
Matisyahu - One Day (YouTube Version).mp3
Metallica - The Unforgiven II (Video)-5bt7kAVxKfs.mp3
É listado somente os arquivos contidos na pasta 'Música'. Quando o caminho completo do arquivo é omitido, o 'ls' assume que o mesmo está no diretório atual.

5. Exibindo somente arquivos com extensões especificas.
SHAMAN@shellscriptx:~/Documentos$ ls *.{pdf,doc}
doc1.doc  doc3.doc  tutorial1.pdf  tutorial3.pdf
doc2.doc  doc4.doc  tutorial2.pdf  tutorial4.pdf
O diretório 'Documentos' contém três tipos de arquivos, são eles: doc, pdf e txt. Utilizando um conjunto '{extensao1,extensao2,...}', podemos especificar múltiplas extensões em uma única expressão. Em nosso caso especifico informamos ao 'ls' para exibir os arquivos com qualquer nome '*.', desde de que possuam as extensões 'pdf' e 'doc'.

6. Listar todos os arquivos recursivamente.
SHAMAN@shellscriptx:~$ ls -R

.:
Área de Trabalho  Downloads  Modelos  Público       service2.log  service4.log
Documentos        Imagens    Música   service1.log  service3.log  Vídeos


./Área de Trabalho:

./Documentos:
arq1.txt  arq3.txt  arq5.txt  doc2.doc  doc4.doc       tutorial2.pdf  tutorial4.pdf
arq2.txt  arq4.txt  doc1.doc  doc3.doc  tutorial1.pdf  tutorial3.pdf


./Downloads:

./Imagens:
ex_func_args.png     ex_win3_yad.png  ex_win6_yad.png  ex_win9_yad.png
ex_minha_janela.png  ex_win4_yad.png  ex_win7_yad.png  ex_win_yad.png
ex_win2_yad.png      ex_win5_yad.png  ex_win8_yad.png


./Modelos:

./Música:

After Forever - Prisión of Desire (Full Album)-0H_FNur8KD0.mp3
Matisyahu - One Day (YouTube Version).mp3
Metallica - The Unforgiven II (Video)-5bt7kAVxKfs.mp3


./Público:

./Vídeos:
Todos os arquivos dos diretórios e subdiretórios são listados e na saída o nome da pasta recipiente precede os nomes dos arquivos armazenados. Note que o caractere '.' (ponto) está presente antes de cada nome de pasta; Ele representa o diretório atual.

7. Exibindo os arquivos alterados recentemente. (ordem reversa)
SHAMAN@shellscriptx:~/Documentos$ ls -lrt
total 52
-rw-rw-r-- 1 SHAMAN SHAMAN  46 Jan 20 08:39 doc4.doc
-rw-rw-r-- 1 SHAMAN SHAMAN  46 Jan 20 08:39 doc3.doc
-rw-rw-r-- 1 SHAMAN SHAMAN  46 Jan 20 08:39 doc2.doc
-rw-rw-r-- 1 SHAMAN SHAMAN  46 Jan 20 08:39 doc1.doc
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 tutorial4.pdf
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 tutorial3.pdf
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 tutorial2.pdf
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 tutorial1.pdf
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 arq5.txt
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 arq4.txt
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 arq3.txt
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 arq2.txt
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 10:12 arq1.txt
Por padrão o comando ls exibe os arquivos alterados recentemente em uma ordem cronológica decrescente, ou seja, os itens recentes estarão nas primeiras linhas e os mais antigos no final. A razão de utilizar o parâmetro '-r' para reverter essa ordem, se deve a boa prática quando se lida com diretórios contendo dezenas ou até centenas de arquivos, tornando-se viável a visibilidade do arquivo já que o mesmo estará na última linha.

8. Listando um arquivo por linha.
SHAMAN@shellscriptx:~/Documentos$ ls -1
arq1.txt
arq2.txt
arq3.txt
arq4.txt
arq5.txt
doc1.doc
doc2.doc
doc3.doc
doc4.doc
tutorial1.pdf
tutorial2.pdf
tutorial3.pdf
tutorial4.pdf
Os arquivos são exibidos em uma lista simples (um arquivo por linha). Se torna muito útil quando precisamos extrair somente o nome para redirecionar para uma segunda instrução, loop, ou quem sabe até mesmo um xargs.

9. Exibindo a data de acesso dos arquivos. (ordem reversa)
SHAMAN@shellscriptx:~/Documentos$ ls -ltr --time=access
total 52
-rw-rw-r-- 1 SHAMAN SHAMAN  46 Jan 20 08:39 doc3.doc
-rw-rw-r-- 1 SHAMAN SHAMAN  46 Jan 20 08:39 doc2.doc
-rw-rw-r-- 1 SHAMAN SHAMAN  46 Jan 20 08:40 doc4.doc
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 tutorial3.pdf
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 tutorial2.pdf
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 tutorial1.pdf
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 arq5.txt
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 arq3.txt
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 09:33 arq2.txt
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 10:12 arq1.txt
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 10:32 tutorial4.pdf
-rw-rw-r-- 1 SHAMAN SHAMAN  46 Jan 20 11:26 doc1.doc
-rw-rw-r-- 1 SHAMAN SHAMAN 105 Jan 20 11:27 arq4.txt
O padrão da lista longa é exibir a data de modificação do arquivo, porém quando se utiliza o parâmetro '--time=access' altera-se o comportamento do comando, fazendo com que ele exiba a data do último acesso.

10. Listando todos os arquivos exceto uma extensão.
SHAMAN@shellscriptx:~/Documentos$ ls -I "*.txt"
doc1.doc  doc3.doc  tutorial1.pdf  tutorial3.pdf
doc2.doc  doc4.doc  tutorial2.pdf  tutorial4.pdf
Todos os arquivos foram listados, porém aqueles com a extensão 'txt' foram ignorados.

Comentários

Contato

Nome

E-mail *

Mensagem *