Isso faz o que você está procurando:
find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x
Isso usa find em vez de ls porque, geralmente, analisar ls da saída não é confiável . Este formulário, usando find , no entanto, funcionará com nomes de arquivos, mesmo que contenham novas linhas ou outros caracteres difíceis.
Explicação
-
find . -maxdepth 1 -type f -print0Isto seleciona os arquivos. Isso pode ser personalizado usando qualquer uma das muitas opções do find. A opção
print0informafindpara imprimir os nomes de arquivos em uma lista separada por nulo. Este é o único confiável para transmitir listas de nomes de arquivos. -
xargs -L1 -p0 chmod +xIsso leva a lista separada por núm de nomes de arquivos gerados por
finde aplica seu comando a eles.
A opção -L1 informa xargs para trabalhar em apenas um nome de arquivo de cada vez. A opção -p informa xargs para solicitar aprovação antes de continuar. A opção -0 informa xargs para usar o caractere nulo como o delimitador entre os nomes dos arquivos.
[Eu desconhecia a opção -p para xargs até que @kwan a apontasse.]