Exclui todos os arquivos com permissão executável em um diretório

5

Estou precisando excluir todos os arquivos executable de um diretório. Meu diretório contém alguns arquivos de configuração e arquivos executáveis , e eu preciso excluir todos os arquivos executable que eu não quero.

Para isso, escrevi um comando como este:

ls -lp | grep -v / | awk 'match($0,"-**x*x*x",a);{print  a[1]}'| \
awk '{print $9}' | xargs rm -f

Existe outra maneira de fazer isso?

Eu tentei com find . Ele listará todos os outros arquivos de sub-diretório. Eu usei grep -v / para evitar subdiretórios na pasta atual.

    
por saravanakumar 04.07.2016 / 11:04

1 resposta

20

Você deve usar find para esta tarefa:

find . -type f -executable

mostrará os arquivos que são executáveis pelo usuário atual, recursivamente.

Para limitar a pesquisa apenas ao diretório atual:

find . -maxdepth 1 -type f -executable

Para remover:

find . -maxdepth 1 -type f -executable -exec rm {} +

Ou com o GNU find :

find . -maxdepth 1 -type f -executable -delete

Como uma nota secundária, se você quiser encontrar arquivos executáveis por qualquer usuário, não apenas o usuário atual (definido como bits de permissão de execução regulares):

find . -type f -perm /111
    
por 04.07.2016 / 11:08

Tags