file chmod solo in tutte le sottodirectory


54

Per favore qualcuno mi assista con chmod, ho la seguente struttura di file

-dir1
--file1
--file2
--dir1a
---file1a1
---file1a2
--dir1b
---file1b1
---file1b2

Come posso convertire 655 in tutti i file in dir1 e in tutti i sottodir? Quindi tutti i file avranno 655 permessi e tutte le directory rimarranno come erano.

Grazie

Risposte:


108

Meglio usare

find . -type f -exec chmod 655 -- {} +

L'altra soluzione proposta da @sagarchalise non funzionerà se i nomi dei file contengono spazi o iniziano con un trattino.


16
Allo stesso modo, per modificare tutte le directory è possibile utilizzare find . -type d -exec chmod 755 {} +per modificare tutte le directory in 755.
Kris Harper

2
A cosa serve il +?
Brettski,

3
@Brettski: il +segno viene espanso findnell'elenco dei percorsi dei file (o parte di esso, se troppo lungo).
enzotib,

3
A cosa serve il - per?
Orienta il

2
Il --indica la fine delle opzioni della riga di comando. Ciò impedisce che un file che inizia con un trattino venga interpretato come un'opzione della riga di comando come verrebbe dopo --.
Tim Tisdall

8

Penso di andare dentro dir1e

find . -type f | xargs chmod 655

farà il trucco.


funziona anche questo ma ho un avvertimento con "Nessun file o directory"
netic

@manetic: dipende, come detto nella mia risposta, da nomi di file contenenti spazi.
enzotib,

4
Per completezza, cambiandolo per trovare. -type f -print0 | xargs -0 chmod 655 risolverebbe il problema dello spazio, credo, anche se la risposta di @ enzotib è più concisa
matt freake

ciò Freake matt ha detto
Sergiy Kolodyazhnyy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.