Como usar o comando ls para listar arquivos e diretórios no Linux

Usamos o comando ls do Linux todos os dias sem pensar nisso. É uma pena. Preste atenção e você encontrará muitas opções úteis – incluindo algumas que você deve adicionar ao seu arsenal de linha de comando.

ls lista arquivos e diretórios

O comando ls é provavelmente o primeiro comando que a maioria dos usuários Linux encontra. Aqueles de nós que usam a linha de comando a usam dia após dia, sem nem mesmo pensar a respeito. Isso pode explicar por que esse comando é mais do que a maioria dos usuários imagina. Listamos arquivos com ele para ver o que há em um diretório. Listamos os arquivos em formato longo quando queremos examinar as permissões de um arquivo. Além disso, recebe pouca consideração.

O comando ls é um daqueles comandos com inúmeras opções. Talvez isso seja parte do problema. Existem tantas opções, como você as examina para encontrar as úteis? E, tendo-os encontrado, como você se lembra deles?

Permutações úteis do comando ls com suas cadeias de opções e parâmetros são os candidatos perfeitos para aliases. Na verdade, na maioria das distribuições, o que você chama de comando ls “nu” é, na verdade, um apelido. Entre outras coisas, o comando type pode ser usado para mostrar a definição subjacente de apelidos. Vejamos a definição de ls:

tipo ls

Os parâmetros –color = auto são incluídos automaticamente sempre que você usa o comando ls. Isso é o que fornece as diferentes cores para os diferentes tipos de arquivo nas listagens.

Listagens ls simples

Todo mundo que já passou algum tempo usando o terminal Linux sabe que, por padrão, ls lista os arquivos e diretórios no diretório atual.

ls

Se você quiser que sua listagem seja produzida em uma única coluna, use a opção -1 (um arquivo por linha):

ls -1

Discutiremos esse nome de arquivo de aparência estranha no topo da lista em um minuto.

Usando ls em diretórios diferentes

Para que ls liste os arquivos em um diretório diferente do diretório atual, passe o caminho do diretório para ls na linha de comando. Você também pode passar mais de um diretório para ls e listá-los um após o outro. Aqui, estamos pedindo ao ls para listar os arquivos em dois diretórios, um chamado “Help” e o outro chamado “gc_help”.

ls Help gc_help

Quando ls lista o conteúdo do primeiro diretório, ele lista o conteúdo do segundo. Ele imprime o nome de cada diretório à medida que os processa:

  Como fazer backup e restaurar um perfil do Firefox no Linux

Usando padrões de arquivo

Para listar seletivamente um conjunto de arquivos, use a correspondência de padrões. O ponto de interrogação “?” representará qualquer caractere único e o asterisco “*” representará qualquer sequência de caracteres. Para listar quaisquer arquivos ou diretórios que tenham nomes começando com “ip_”, use este formato:

ls ip_*

Para listar arquivos com extensões “.c”, use este formato:

ls *.c

Você também pode usar ls com grep, e usar grep’s capacidades de correspondência de padrões. Vamos procurar qualquer arquivo que tenha a string “_pin_” no nome:

ls | grep _pin_

Isso é quase o mesmo que usar ls sozinho, com dois curingas:

ls | grep _pin_
ls *_pin_*

Por que quase o mesmo? Observe os diferentes layouts. grep força a saída para um único nome de arquivo por formato de linha.

Caracteres não imprimíveis

É possível encontrar-se com um nome de arquivo que tem um não imprimível ou caractere de controle em seu nome de arquivo. Normalmente, isso pode acontecer quando você expande um arquivo que baixou da web ou recuperou um repositório git, e o autor original cometeu um erro ao criar um arquivo, mas não o localizou.

Nosso arquivo estranho é um destes:

Se olharmos para ele no navegador de arquivos e pressionarmos “F2” para renomeá-lo, os caracteres não imprimíveis são representados por um símbolo estranho.

Você pode usar a opção -b (escape) para permitir que você veja o que o nome do arquivo realmente contém. Esta opção faz com que ls use as sequências de escape do Linguagem de programação C para representar os caracteres de controle.

ls -b a*

O personagem misterioso é revelado como um personagem de nova linha, representado em C como “n”.

Ignorando arquivos

Para omitir certos arquivos de uma lista, use a opção –hide. Suponha que você não queira ver os arquivos “.bak” de backup na lista. Você pode usar este comando:

ls
ls --hide=*.bak

Os arquivos “.bak” não estão incluídos na segunda lista.

A lista de formato longo

A opção -l (lista longa) faz com que ls forneça informações detalhadas sobre cada arquivo.

ls -l

Há muitas informações aqui, então vamos examiná-las.

A primeira coisa que o ls exibe é o tamanho total de todos os arquivos na lista. Em seguida, cada arquivo ou diretório é exibido em uma linha por si só.

O primeiro conjunto de dez letras e travessões é o tipo de arquivo e o proprietário, grupo e outras permissões de arquivo.

O primeiro caractere representa o tipo de arquivo. Será um dos seguintes:

-: Um arquivo normal.
b: Um arquivo especial de bloco.
c: Um arquivo especial de caractere.
d: um diretório.
l: Um link simbólico.
n: um arquivo de rede.
p: um pipe nomeado.
s: um soquete.

Os próximos nove caracteres são três grupos de três caracteres exibidos de forma contígua. Cada grupo de três representa as permissões de leitura, gravação e execução, nessa ordem. Se a permissão for concedida, haverá um r, w ou x presente. Se a permissão não for concedida, um hífen – será mostrado.

  Como encontrar informações críticas do sistema no Linux com o I-Nex

O primeiro conjunto de três caracteres são as permissões para o proprietário do arquivo. O segundo conjunto de três permissões é para membros do grupo e o último conjunto de três permissões é para outros.

Às vezes, a permissão de execução para o proprietário é representada por um s. Isto é o setuid mordeu. Se estiver presente, significa que o arquivo é executado com os privilégios do proprietário do arquivo, não do usuário que está executando o arquivo.

A permissão de execução para o grupo também pode ser um s. Isto é o setgid mordeu. Quando isso é aplicado a um arquivo, significa que o arquivo será executado com os privilégios do grupo da ower. Quando usado com um diretório, todos os arquivos criados dentro dele terão suas permissões de grupo do diretório em que estão sendo criados, não do usuário que está criando o arquivo.

A permissão de execução para os outros às vezes pode ser representada por um t. Isto é o pedaço pegajoso. Geralmente é aplicado a diretórios. Se isso for definido, independentemente dos privilégios de gravação e executável definidos nos arquivos no diretório, apenas o proprietário do arquivo, o proprietário do diretório ou o usuário root podem renomear ou excluir arquivos no diretório.

Um uso comum para o sticky bit é em pastas como “/ tmp”. Todos os usuários do computador podem gravá-lo. A parte fixa no diretório garante que os usuários – e os processos iniciados pelos usuários – só possam renomear ou excluir seus próprios arquivos temporários.

Podemos ver o sticky bit no diretório “/ tmp”. Observe o uso da opção -d (diretório). Isso faz com que o ls relate os detalhes do diretório. Sem esta opção, ls irá relatar sobre os arquivos dentro do diretório.

ls -l -d /tmp

O número após as permissões é o número de links físicos para o arquivo ou diretório. Para um arquivo, geralmente é um, mas se outros links físicos forem criados, esse número aumentará. Um diretório normalmente tem pelo menos dois links físicos. Um é um link para ele mesmo e o outro é sua entrada no diretório pai.

O nome do proprietário e do grupo são exibidos a seguir. Eles são seguidos pelo tamanho do arquivo e pela data da última modificação do arquivo. Finalmente, o nome do arquivo é fornecido.

Tamanhos de arquivo legíveis por humanos

Nem sempre é conveniente ter os tamanhos dos arquivos em bytes. Para ver os tamanhos dos arquivos nas unidades mais adequadas (Kilobytes, Megabytes, etc.), use a opção -h (legível para humanos):

ls -l -h

Mostrando arquivos ocultos

Para ver os arquivos ocultos, use a opção -a (todos):

ls -l -a

As duas entradas “.” e “..” representam o diretório atual e o diretório pai, respectivamente. Um arquivo chamado “.base_settings” agora está visível pela primeira vez.

Omitindo. e .. de listagens

Se você não quiser que sua listagem esteja desordenada com o “.” e entradas “..”, mas você deseja ver os arquivos ocultos, use a opção -A (quase todos):

ls -l -A

O arquivo oculto ainda está listado, mas o “.” e as entradas “..” são suprimidas.

  Como instalar o Upterm no Linux

Listagem de diretórios recursivamente

Para que o ls liste os arquivos em todos os subdiretórios, use a opção -R (recursiva)

ls -l -R

ls percorre toda a árvore de diretórios abaixo do diretório inicial e lista os arquivos em cada subdiretório.

Exibindo o UID e GID

Para que o ID do usuário e o ID do grupo sejam exibidos em vez do nome do usuário e do grupo, use a opção -n (uid e gid numéricos).

ls -n

Classificando as listagens

Você pode classificar a lista por extensão, tamanho do arquivo ou hora de modificação. Essas opções não precisam ser usadas com o formato de lista longa, mas geralmente faz sentido fazer isso. Se você estiver classificando por tamanho de arquivo, faz sentido ver os tamanhos dos arquivos na lista. Quando você está classificando por tipo de extensão, o formato de lista longa não é tão importante.

Para classificar por extensão, use a opção -X (classificar por extensão).

ls -X -1

Os diretórios são listados primeiro (sem extensões) e o restante segue em ordem alfabética, de acordo com as extensões.

Para classificar por tamanho de arquivo, use a opção -S (classificar por tamanho de arquivo).

ls -l -h -S

A ordem de classificação é do maior para o menor.

Para classificar a lista por hora de modificação, use a opção -t (classificar por hora de modificação).

ls -l -t

A lista é classificada pela hora da modificação.

Se a hora de modificação do arquivo estiver dentro do ano atual, as informações exibidas são o mês, o dia e a hora. Se a data de modificação não estava no ano atual, as informações exibidas são o mês, o dia e o ano.

Uma maneira rápida de obter os arquivos mais novos e mais antigos em um diretório é usar ls com os comandos head e tail.

Para obter o arquivo ou diretório mais recente, use este comando:

ls -t | head -1

Para obter o arquivo ou diretório mais antigo, use este comando:

ls -t | tail -1

Para reverter a ordem de classificação

Para reverter qualquer uma das ordens de classificação, use a opção -r (reverter).

ls -l -h -S -r

A listagem agora está ordenada do menor arquivo para o maior.

E tem mais

Verifique a página de manual do ls, existem muitas mais opções. Alguns deles satisfazem casos de uso um tanto obscuros, mas de vez em quando, você ficará feliz em saber sobre eles.

Você precisa ver os carimbos de data / hora dos arquivos com a máxima precisão que o Linux pode fornecer? Use a opção de tempo integral:

ls --full-time

Talvez você queira ver o número de inode dos arquivos? Use a opção inode:

ls -i

Você está trabalhando em uma tela monocromática e deseja eliminar todo o risco de confundir arquivos para diretórios e links? Use a opção classify e ls acrescentará um deles a cada entrada da lista:

/: Um diretório.
@: Um link simbólico.
|: Um pipe nomeado.
=: Um soquete.
*: Um arquivo executável

ls -F

Faça alguma escavação. Você descobrirá que ls é uma veia rica e continuará encontrando joias.