find e link simbólico

4

Eu estava vasculhando a documentação do find para utilizar melhor o uso do comando.

Eu estava lendo a parte que diz

GNU find will handle symbolic links in one of two ways; firstly, it can dereference the links for you - this means that if it comes across a symbolic link, it examines the file that the link points to, in order to see if it matches the criteria you have specified. Secondly, it can check the link itself in case you might be looking for the actual link. If the file that the symbolic link points to is also within the directory hierarchy you are searching with the find command, you may not see a great deal of difference between these two alternatives.

By default, find examines symbolic links themselves when it finds them (and, if it later comes across the linked-to file, it will examine that, too).

No meu entender, se eu fizer algo como:

find -L -iname "*foo*"

isto irá procurar o diretório atual recursivamente e quando ele encontrar um link simbólico, ele segue o link para o arquivo original. Se o arquivo original tiver o nome padrão *foo* , o primeiro link será relatado.

No entanto, isso não parece ser o caso. Eu tenho

main-file
sl-file -> main-file

Executando o comando acima de find -L -iname "*main*" reports

./main-file

E eu estava esperando

./main-file # because it matches the criterion
./sl-file   # because the file points to matches the criterion

Dito isso, usar outro teste como -type funciona como esperado. Diga que eu tenho isso:

main-file
dir/sl-file -> ../main-file

Executando isso

find dir -type f

não retorna nada. Mas isso

find -L dir -type f

relata dir/sl-file .

O que dá?

Eu passei por esta postagem que diz que um nome de arquivo não é uma propriedade de arquivo. Isso é algo que eu realmente não consigo entender.

    
por joker 10.10.2018 / 14:41

0 respostas