Encontre arquivos executáveis recursivamente

3

Eu tenho o diretório chamado Test e alguns diretórios dentro dele. O Test e os diretórios dentro dele têm arquivos executáveis. Gostaria de imprimi-los com ls . Eu usaria esse comando.

ls -l 'find Test/ -perm /u=x,g=x,o=x -type f'

Este comando é bom / certo / rápido ou não?

Minha solução é:

find Test/ -executable -type f -exec ls -l {} \;

e obteve o mesmo resultado que warl0ck e pradeepchhetri oferecidos.

    
por Maksim Dmitriev 31.03.2013 / 11:31

3 respostas

8

Na verdade, você não pode integrar o comando ls com o find,

find Test/ -type f -perm /u=x,g=x,o=x -exec ls -l {} \;

UPDATE

Na verdade, -executable não é equivalente a -perm /u=x,g=x,o=x . Você pode ter arquivos executáveis apenas pelo grupo ou por outros, que não serão exibidos.

Então, depende do seu propósito, se você quer arquivos executáveis somente por você, não há problema em usar -executable .

    
por 31.03.2013 / 11:51
4

Não há necessidade de usar -exec , pois find vem com um sinal -ls .

$ find Test/ -perm /u=x,g=x,o=x -type f -ls

Da página man :

-ls True; list current file in ls -dils format on standard output. The block counts are of 1K blocks, unless the environment variable POSIXLY_CORRECT is set, in which case 512-byte blocks are used. See the UNUSUAL FILENAMES section for information about how unusual characters in filenames are handled.

    
por 31.03.2013 / 12:23
3

Você deve usar o argumento -exec do comando find.

$ find Test/ -perm /u=x,g=x,o=x -type f -exec ls -l {} \;
    
por 31.03.2013 / 11:51