Risposte:
Questo fa quello che stai cercando:
find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x
Questo utilizza findpiuttosto che lsperché, in genere, l' analisi lsdell'output non è affidabile . Questo modulo, findtuttavia, funzionerà con nomi di file anche se contengono nuove righe o altri caratteri difficili.
Spiegazione
find . -maxdepth 1 -type f -print0
Questo seleziona i file. Questo può essere personalizzato usando una delle tante opzioni di find. L'opzione print0dice finddi stampare i nomi dei file in un elenco separato da null. Questo è l'unico affidabile per trasmettere elenchi di nomi di file.
xargs -L1 -p0 chmod +x
Questo prende l'elenco separato da null di nomi di file generati da finde applica loro il tuo comando.
L' -L1opzione dice xargsdi lavorare su un solo nome di file alla volta. L' -popzione indica xargsdi richiedere l'approvazione prima di continuare. L' -0opzione dice xargsdi usare il carattere null come delimitatore tra i nomi dei file.
[Non ero a conoscenza -pdell'opzione xargsfino a quando @kwan non l'ha sottolineato.]
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.Così funziona con la -maxdepth 1prima della -type f, come: find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x.
È possibile utilizzare xargs.
per esempio:
ls|xargs -I path -p chmod +x path
Opzione -p: chiedere all'utente se eseguire ciascuna riga di comando e leggere una riga dal terminale. Esegui la riga di comando solo se la risposta inizia con 'y' o 'Y'.
xargs -pcosì tanto che lo copierò.
touch "a very long file namee premi Invio. Vedi la continuazione della riga e digita semplicemente il preventivo di chiusura e premi di nuovo Invio. tadaa, newline nel nome file. Per pigrizia per riscrivere un lungo nome di file.
findcompatibile il comando POSIX utilizzando-exec printf '%s\0' {} +. Tuttavia, non pensare che ci sia modo di rendere compatibile POSIX.