Isso depende de como você define quais arquivos devem ser configurados como executáveis. Por exemplo, se considerar todos os arquivos que não possuem ponto no nome do arquivo, você pode usar:
find -type f -not -name "*.*" -exec chmod +x \{\} \;
Isto irá encontrar recursivamente todos os arquivos (não diretórios) que não possuem ponto no nome do arquivo e configurá-los como executáveis. Se você quiser limitar isso apenas ao diretório atual, adicione -maxdepth 1
argument, como este:
find -maxdepth 1 -type f -not -name "*.*" -exec chmod +x \{\} \;
Você também pode confiar no comando file
, que poderia dizer se um arquivo é um executável ELF. Para fazer isso, você pode executar algo como:
find -type f -exec /bin/sh -c "file {} | grep -q executable && chmod +x {}" \;
Isto irá recursivamente encontrar todos os arquivos regulares e chamar o comando file
neles. Então, o grep irá procurar pela string "executável" na saída deste comando (deve ser algo como ELF 32-bit LSB executable ...
) e
somente se encontrar, chmod
será chamado neste arquivo.
É claro que você também pode adicionar -maxdepth 1
para desativar a pesquisa recursiva.