perché non questo lavoro che sto cercando di cambiare tutti i file a 644 abd tutto -d per 755:trovare. -tipo f -exec chmod 644 {};
find . -type f -exec chmod 644 {} ;
ottengo: trovare: manca argomento `exec' grazie
perché non questo lavoro che sto cercando di cambiare tutti i file a 644 abd tutto -d per 755:trovare. -tipo f -exec chmod 644 {};
find . -type f -exec chmod 644 {} ;
ottengo: trovare: manca argomento `exec' grazie
Una buona alternativa è questa:
find . -type f | xargs chmod -v 644
e per le directory:
find . -type d | xargs chmod -v 755
e ad essere più esplicito:
find . -type f | xargs -I{} chmod -v 644 {}
Piping a xargs è un modo sporco di fare quello che può essere fatto all'interno di find.
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
Si può essere ancora più controllo con altre opzioni, come ad esempio:
find . -type d -user harry -exec chown daisy {} \;
si possono fare alcune cose molto interessanti con find e si può fare alcune cose molto pericolosi anche. Dai un'occhiata a "man find", è lunga ma vale una lettura veloce. E, come sempre ricorda:
Perché il metodo xargs dovrebbe essere "sporco"? Ha l'enorme vantaggio di eseguire chmod solo una volta, con tutti i file come argomenti. Il metodo "-exec chmod" creerà un sottoprocesso per file. –
Se vuoi eseguire solo chmod una volta, cambialo in 'find. -tipo f -exec chmod 0644 {} + 'che funziona essenzialmente come il metodo xargs, costruendo una riga di comando. (Il \ sopra è solo per sfuggire al punto e virgola). – johnthacker
Quick oneliner: 'find. -type d -exec chmod 0755 {} \; && trova . -tipo f -exec chmod 0644 {} \; ' – lucaferrario
Ho bisogno di questo così spesso che ho creato una funzione nel mio ~/.bashrc
di file:
chmodf() {
find $2 -type f -exec chmod $1 {} \;
}
chmodd() {
find $2 -type d -exec chmod $1 {} \;
}
ora posso usare queste scorciatoie:
chmodd 0775 .
chmodf 0664 .
Termina con '\;' non con ' ; 'da solo. –
... perché tutto ciò che segue '-exec' viene trattato come argomento. Se tu avessi un '' 'sarebbe stato trattato come un terminatore per l'intero' find', ma in realtà hai bisogno di terminare 'exec', quindi deve essere salvato come parte della stringa argomento. –
possibile duplicato di [Come impostare chmod per una cartella e tutte le relative sottocartelle e file in Linux Ubuntu Terminal?] (Http://stackoverflow.com/questions/3740152/how-to-set-chmod-for-a- cartella-e-tutte-delle-sue-sottocartelle-e-file-in-linux-ubunt) –