Penso di essere abbastanza avanzato nel mio uso di find ma ogni volta che lo uso non riesco a ricordare per la vita il metodo per chiudere l'opzione -exec. Trascorro molto tempo a leggere ogni volta che lo uso. Non sto semplicemente usando abbastanza o non mi aspetto troppo da me stesso? Cominciamo con un esempio tipico che mi rende frustrato.
La struttura delle directory ha file con tutte le autorizzazioni errate, file nascosti, collegamenti simbolici, ecc. Voglio cambiare la proprietà a un valore ragionevole
find . -type f -exec chown username {} \;
find . -type d -exec chown username {} \;
find . -type d -exec chgrp usergroup {} \;
find . -type f -exec chgrp usergroup {} \;
(Scusami se il finale è all'indietro ... L'ho guardato un'ora fa e ancora non sono sicuro)
Ma ho paura di eseguirlo a causa di montature, collegamenti simbolici, ecc. Ho fatto il goof supremo di chmod. * E l'avevo fatto ricorrere su di me prima. So -xdev rinuncerà alle partizioni incrociate ma non sono sicuro di cosa accadrà ai file che vivono all'interno delle directory che sono collegamenti simbolici.
Quindi, come si fa a dominare questa bestia che può uccidere file cruciali?
Aggiorna potando i migliori suggerimenti di seguito e riassumendo:
- Avere una directory di pratica collegata e montata su altre directory di pratica.
- Usa xargs anziché il comando exec non intuitivo.
- Utilizzare -exec echo {} per sanità mentale e sicurezza
- Il punto e virgola è speciale e lo stai scappando, quindi il carattere di escape è il primo
- Il comando -o può aiutarti a combinare i criteri di selezione.
Sono un po 'confuso riguardo a print0 ma xargs è sempre stato un po' sulla pratica non facile da capire a prima vista che cerco di evitare.