Como evitar encontrar -execdir de seguir links simbólicos?

1

Digamos que eu tenha um link simbólico:

linktob -> b

Se eu executar algo como find . -type l -execdir chmod 777 {} \; , o comando chmod afetará o arquivo para o qual o link simbólico está apontando, ou seja, "b".

A página man sugere que os links simbólicos não são seguidos por padrão, mas esse não parece ser o caso aqui.

Como posso obter -execdir , -exec etc. para trabalhar no próprio link simbólico?

    
por user5817 13.06.2013 / 10:36

1 resposta

1

Você pode ver neste exemplo que o comando find faz realmente operar no link simbólico:

$ ls -l *
subdir1:
total 0
-rwxrwxrwx 1 nate nate 0 Jun 13 09:20 realfile

subdir2:
total 0
lrwxrwxrwx 1 nate nate 19 Jun 13 09:20 symlinkfile -> ../subdir1/realfile
$ find . -type l -exec ls "{}" \;
./subdir2/symlinkfile

Mas o comando subjacente (por exemplo, chmod ) pode não funcionar. Neste exemplo, podemos ver que o chmod está realmente alterando as permissões do arquivo target :

$ find . -type l -exec chmod -v 777 "{}" \;
mode of './subdir2/symlinkfile' retained as 0777 (rwxrwxrwx)
$ find . -type l -exec chmod -v 444 "{}" \;
mode of './subdir2/symlinkfile' changed from 0777 (rwxrwxrwx) to 0444 (r--r--r--)

$ ls -l *
subdir1:
total 0
-r--r--r-- 1 nate nate 0 Jun 13 09:20 realfile

subdir2:
total 0
lrwxrwxrwx 1 nate nate 19 Jun 13 09:20 symlinkfile -> ../subdir1/realfile

da página do manual chmod:

chmod never changes the permissions of symbolic links; the chmod system call cannot change their permissions

O que você está tentando fazer com o symlink, exatamente?

    
por 13.06.2013 / 15:25