Permissão negada ao usar -exec {} ls com comando find

3

Quando executar o comando a seguir, ele me fornece a mensagem permission denied para todos os arquivos.

find /data/code/ -name "*.jar" -exec {} ls \;


find: '/data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar': Permission denied

Mas se eu fizer

ls  /data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar

Imprime a saída adequada sem qualquer mensagem permission denied .

/data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar

O que estou fazendo de errado?

p.s. : Eu preciso listar e remover todos os arquivos jar em /data/code

    
por Heisenberg 07.06.2016 / 07:44

1 resposta

3

Enquanto faz:

find /data/code/ -name "*.jar" -exec {} ls \;

você está tentando executar o arquivo encontrado (por exemplo, /data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar ) com ls como um argumento para ele, levando ao erro de permissão negada.

Basta mudar a ordem:

find /data/code/ -name "*.jar" -exec ls {} \;

A opção find do GNU também tem -ls , portanto, no GNU find , você pode simplesmente fazer:

find /data/code/ -name "*.jar" -ls
    
por 07.06.2016 / 07:49

Tags