Um: grep 'ASCII text'
retorna não apenas o nome do arquivo, mas também o tipo do arquivo em si; você precisa processar a saída para retornar somente o nome do arquivo
Dois: chmod
não aceita argumentos de STDIN, que é o que você está tentando fazer com o canal |
. Você terá que usar xargs
ou agrupar o acima em um for
loop
Dito isto, aqui estão duas soluções para você:
Solução # 1: com os tubos
file * | awk '/ASCII text/ {gsub(/:/,"",$1); print $1}' | xargs chmod -x
Solução # 2: com loop for
for fn in $(file * | awk '/ASCII text/ {gsub(/:/,"",$1); print $1}'); do chmod -x "$fn"; done
Escolha seu veneno: -)