Linha de Comando em Linux: Find – Parte 02, Opções Verdadeiras -H -L -P

Veja as outras partes desse Post:

  1. Linha de Comando em Linux: Find – Parte 01
  2. Linha de Comando em Linux: Find – Parte 02, Opções Verdadeiras -H -L -P
  3. Linha de Comando em Linux: Find – Parte 03, Depuração(Debug) de Erros
  4. Linha de Comando em Linux: Find – Parte 04, Otimizando as Buscas com a Opção -O
  5. Linha de Comando em Linux: Find – Parte 05, Expressões
  6. Linha de Comando em Linux: Find – Parte 06, Operadores
  7. Linha de Comando em Linux: Find – Parte 07, Exemplos de Uso

Na parte 01  vimos a estrutura do comando find.

find + opções verdadeiras + opções de depuração ou debug +  níveis de otimização + caminho da pasta a ser pesquisada + expressões:

find [-H] [-L] [-P] [-D debug_opções] [-O nível] [Caminho…] [expressão] 

Como dito anteriormente, como find contem opções tanto antes do caminho como nas expressões, a man page(manual) denomina de “opções verdadeiras” as que vêm  antes  do caminho.

A explicação das opções verdadeiras já foi feita no post anterior. Aqui irei apenas praticá-las.

Iremos realizar laboratório dessa ferramenta por partes. Começaremos com as opções verdadeiras -H, -L, -P.

Ambiente de Trabalho

Trabalharei dentro da pasta  “/home/elder/Labs” que tem os seguintes aquivos:

/home/elder/Labs/
├── .arquivoOculto.txt
├── link_para_tree -> ./tree.html
├── link_para_tree02_quebrado -> ./tree02.html
├── lista_de_nomes_LINK.txt -> /home/elder/Labs/pastaLabs/lista_de_nomes.txt
├── .pasta
├── pastaLabs
│   └── lista_de_nomes.txt
├── tree.html
└── Tree.html

Obs.: Poderia usar cd para acessar a caminho   “/home/elder/Labs”  e asssim, já dentro da pasta, não precisaria digitar sempre esse caminho(“/home/elder/Labs”);  mas para facilitar propositadamente irei ficar digitando. Lembrando que  posso substituir   “/home/elder/Labs”   por “~/Labs” 🙂 pois o  til(~) representa a home do usuário, no meu caso “/home/elder”

 

 

Opções verdadeiras para Links Simbólicos: -H, -L, -P

 

Como sabemos, por padrão, find nunca segue links simbólicos. Isto é, ele exibe informações do link e não do arquivo para o qual o link aponta.

  1. Dentro do caminho “/home/elder/Labs” encontre arquivos com “lista_de_arquivos” em seus nomes. Use -name para o nome do arquivo e -ls para listar suas propriedades.
    [elder@centos65 ~]$ find  /home/elder/Labs/  -name "lista_de_nomes*"   -ls
    136534    0 -rw-rw-rw-   1 elder    elder           0 Out 24 11:46 /home/elder/Labs/pastaLabs/lista_de_nomes.txt
      6475    0 lrwxrwxrwx   1 elder    elder          45 Out 24 11:47 /home/elder/Labs/lista_de_nomes_LINK.txt -> /home/elder/Labs/pastaLabs/lista_de_nomes.txt

    O segundo arquivo encontrado é um link simbólico. Se abrirmos o arquivo “lista_de_nomes_LINK.txt”  estaremos abrindo “lista_de_nomes.txt“. Conforme exibido abaixo. O link aponta para o outro arquivo.

    /home/elder/Labs/lista_de_nomes_LINK.txt -> /home/elder/Labs/pastaLabs/lista_de_nomes.txt

    A letra L em “lrwxrwxrwx” é de link. Foram exibidas as propriedades do link e não do arquivo para o qual ele aponta; podemos observar isso ao vermos as permissões do link “lrwxrwxrwx” enquanto as permissões do arquivo para o qual ele aponta são “-rw-rw-rw-”

    Os inodes também são diferentes; Um é 136534 e o outro 6475.

  2. Agora, usando a opção -L, no caminho “/home/elder/Labs”, encontre arquivos com “lista_de_arquivos” em seus nomes. Use -name para o nome do arquivo e -ls para listar suas propriedades.
    [elder@centos65 ~]$ find  -L /home/elder/Labs/  -name "lista_de_nomes*"   -ls
    136534    0 -rw-rw-rw-   1 elder    elder           0 Out 24 11:46 /home/elder/Labs/pastaLabs/lista_de_nomes.txt
    136534    0 -rw-rw-rw-   1 elder    elder           0 Out 24 11:46 /home/elder/Labs/lista_de_nomes_LINK.txt
    

    Com -L vemos que find seguiu o link simbólico e acabou trazendo as propriedades do arquivo para o qual ele aponta e não do link em si. Permissões “-rw-rw-rw” e inode 136534 são iguais.

    Também não exibiu o apontamento com a seta “->” que indica que o arquivo é um link para  outro arquivo.

A opção -H

diz: “A única exceção para esse comportamento é quando um arquivo especificado na linha de comando é um link simbólico”

a opção -H do find é um pouco confusa para entendermos. Segundo o manual, com “find  -H” os links continuarão sem serem seguidos. A única exceção é quando o arquivo especificado no   comando é um link simbólico.

Por exemplo, “pastaLabs_LINK” é um link para a pasta “../pastaLabs”

[elder@centos65 minhaPasta]$ ls -l | tail  -n1
lrwxrwxrwx  1 elder elder   12 Out 24 18:43 pastaLabs_LINK -> ../pastaLabs

Se executarmos find em  “pastaLabs_LINK” teremos as propriedades o link

[elder@centos65 minhaPasta]$ find ./pastaLabs_LINK  -ls
136549    0 lrwxrwxrwx   1 elder    elder          12 Out 24 18:43 ./pastaLabs_LINK -> ../pastaLabs

mas se fizermos a mesma coisa usando a opção -H teremos as propriedades e informações de “../pastaLabs”.

[elder@centos65 minhaPasta]$ find -H ./pastaLabs_LINK  -ls
136529    8 drwxrwx---   2 elder    elder        4096 Out 25 10:36 ./pastaLabs_LINK
136550    0 lrwxrwxrwx   1 elder    elder          12 Out 25 10:36 ./pastaLabs_LINK/tree_link.txt -> ../tree.html
136534    0 -rw-rw-rw-   1 elder    elder           0 Out 24 11:46 ./pastaLabs_LINK/lista_de_nomes.txt

“./pastaLabs_LINK” foi especificado na linha de comando acima.

Bom, muito confuso e precisamos de mais detalhes para entendermos essa opção.

 

Conclusão

find [-H] [-L] [-P] [-D debug_opções] [-O nível] [Caminho…] [expressão] 

Já com estudado o comando find sendo executado juntamente com as opções -H, -P e -L iremos estudar em nosso próximo laboratório sobre debugs, usando para isso a opção referente(-D)

 

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

2 Comments to “Linha de Comando em Linux: Find – Parte 02, Opções Verdadeiras -H -L -P”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *