eu tenho
link -> file
eu faço
find -L . -name 'link'
E pegue
./link
Por que é que?
homem encontrar diz:
-L: Siga os links simbólicos. Quando localizar examina ou imprime informações sobre arquivos, as informações usadas devem ser obtidas das propriedades do arquivo para as quais o link aponta, e não do próprio link (a menos que seja um link simbólico quebrado ou que a localização não consiga examinar o arquivo para o qual o link aponta).
A regra geral é que, se um comando opera em links (ou seja, entradas de diretório, que são ponteiros para inodes), o comando trata os links simbólicos como eles mesmos e não como o objeto para o qual o link aponta. Caso contrário, o comando opera para o que o link simbólico aponta. Assim,
cp
segue os links simbólicos por padrão e copia o conteúdo do arquivo apontado pelo link. Mas quando você pedecp
para lidar com as entradas do diretório especificando-R
, ele para de seguir os links simbólicos.mv
sempre funciona com entradas de diretório e, portanto, nunca segue links simbólicos.A
find
atividade normal do comando é operar nas entradas do diretório, para que os links simbólicos não sejam seguidos por padrão. Adicionar-L
causasfind
para seguir links simbólicos para todas as propriedades, exceto aquela que não pode ser ignorada ao fazer a pesquisa de diretório, o nome. Um dos objetivos defind -name
é fornecer entrada para comandos comomv
erm
, que operam nas entradas de diretório. Haveria resultados desagradáveis e surpreendentes sefind -L dir -name
pudesse produzir nomes que apontassem para fora da árvore de diretórios enraizados emdir
.fonte
There would be unpleasant and surprising results if
find -L dir -name` pode produzir nomes que apontam para fora da árvore de diretórios enraizados em dir.` => não deveria ser: seria desagradável ... sefind dir -name pattern
...? porque a adição -L permite apontando para dir foracp -R
copiar coisas sob um link simbólico?