A find -exec
La risposta è buona, ma soffre del problema di solito irrilevante che crea un sottoprocesso separato per ogni singolo file. Tuttavia è perfettamente funzionante e funzionerà male solo quando il numero di file diventa veramente grande. L'utilizzo di xargs
consente di raggruppare i nomi dei file in gruppi di grandi dimensioni prima di eseguire un sottoprocesso per il gruppo di file.
Devi solo fare attenzione che, usando xargs
, gestisci correttamente i nomi di file con spazi, righe nuove o altri caratteri speciali incorporati.
Una soluzione che risolve entrambi i problemi è (ammesso che abbiate un abbastanza decente find
e xargs
implementazione):
find . -type f -print0 | xargs -0 chmod 644
I -print0
cause find
di annullare i nomi dei file sul proprio flusso di output con un carattere NUL (piuttosto che uno spazio) e lo -0
a xargs
fa sapere che dovrebbe aspettarselo come formato di input.
questo dovrebbe essere chiesto in ServerFault – MoshiBin
chmod in realtà dovrebbe essere in grado di distinguere tra i file, collegamenti e cartelle su di essa la propria. – Xeoncross