2012-10-29 13 views
20

Voglio rendere tutti i file (e le directory) sotto una certa directory leggibile in tutto il mondo senza dover chmodare ciascun file da solo. sarebbe bello se c'è un'opzione per farlo anche in modo ricorsivo (guarda sotto le cartelle e chmod 666 tutti i file sotto di esso)Come rendere tutti i file sotto una directory leggibile su linux?

+1

@PedroRomano Come fai a sapere questo non è per la scrittura di uno script Bash? –

+0

@ H2CO3: Non sembra rientrare in [Che tipo di domande posso chiedere qui?] (Http://stackoverflow.com/faq#questions). Non menziona _Bash_ ovunque nel titolo o nel testo. Non ha un tag 'bash'. Ma è solo un commento, giusto? –

+1

@Rorchackh vuoi rendere ** solo i file leggibili ** ed escludi le directory, o intendevi "tutte le voci nella directory" quando hai scritto "tutti i file"? Penso che la successiva si applica. –

risposta

25

man 3 chmod contiene le informazioni che stai cercando.

chmod -R +r directory 

l'opzione -R dice chmod per operare in modo ricorsivo.

+2

Historicaly '-r' è per * ricorsivo * operazione e' -R' è per * ricorsivo pericoloso *. Se 'R' in maiuscolo viene usato per 'chmod' e' chown' è perché preferiamo usare operazioni più precise come usare 'find'. Guarda la mia risposta! –

7

come una directory potrebbe contenere link e/o legare monti, l'uso di find potrebbe garantire una migliore granularità in che cosa fare e cosa non fare ....

find directory \(-type f -o -type d \) -print0 | 
    xargs -0 chmod ugo+r 

Per escludere i percorsi sotto il monte punti:

find directory -mount \(-type f -o -type d \) -print0 | 
    xargs -0 chmod ugo+r 

per escludere alcuni file specifici (.htaccess per il campione):

find directory \(-type f -o -type d \) ! -name '.htaccess' -print0 | 
    xargs -0 chmod ugo+r 
Problemi correlati