Respuestas:
Esto hace lo que estás buscando:
find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x
Esto se utiliza en findlugar de lsporque, en general, la salida de análisis lsno es confiable . Este formulario, findsin embargo, funcionará con nombres de archivo incluso si contienen nuevas líneas u otros caracteres difíciles.
Explicación
find . -maxdepth 1 -type f -print0
Esto selecciona los archivos. Esto se puede personalizar utilizando cualquiera de las muchas opciones de búsqueda. La opción print0le dice findque imprima los nombres de los archivos en una lista separada por nulos. Este es el único confiable para transmitir listas de nombres de archivos.
xargs -L1 -p0 chmod +x
Esto toma la lista de nombres de archivos separados por nulos generados por findy aplica su comando a ellos.
La -L1opción le indica xargsque trabaje solo con un nombre de archivo a la vez. La -popción le indica xargsque solicite aprobación antes de continuar. La -0opción le indica xargsque use el carácter nulo como delimitador entre los nombres de archivo.
[No tenía conocimiento de la -popción xargshasta que @kwan lo señaló.]
find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.por lo que funciona con el -maxdepth 1antes de que el -type f, como: find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x.
Puedes usar xargs.
p.ej:
ls|xargs -I path -p chmod +x path
Opción -p: Pregunte al usuario si debe ejecutar cada línea de comando y leer una línea desde el terminal. Solo ejecute la línea de comando si la respuesta comienza con 'y' o 'Y'.
xargs -pque lo copiaré.
touch "a very long file namey presione enter. Vea la continuación de la línea y simplemente escriba la cotización de cierre y presione enter nuevamente. tadaa, nueva línea en el nombre del archivo. Por flojera para volver a escribir un nombre de archivo largo.
findcomando POSIX sea compatible utilizando-exec printf '%s\0' {} +. Sin embargo, no creo que haya alguna manera de hacer que todo sea compatible con POSIX.