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.
Tags command-line find linux symlink