2012-10-29 8 views
20

Chcę, aby wszystkie pliki (i katalogi) pod określonym światem katalogu były czytelne, bez konieczności samodzielnego chmodowania każdego pliku. byłoby wspaniale, gdyby była opcja robienia tego również rekurencyjnie (patrz foldery i chmod 666 wszystkie pliki pod nim)Jak sprawić, by wszystkie pliki w światach katalogów były czytelne na Linuksie?

+1

@PedroRomano Skąd wiesz, że to nie jest za pisanie skryptu bash? –

+0

@ H2CO3: Wydaje się, że nie pasuje do [Jakie pytania mogę tutaj zadać?] (Http://stackoverflow.com/faq#questions). Nie wspomina o _Bash_ nigdzie w tytule lub tekście. Nie ma znacznika 'bash'. Ale to tylko komentarz, prawda? –

+1

@Rorchackh chcesz, aby pliki ** były czytelne ** i wykluczyły katalogi, czy też miałeś na myśli "wszystkie wpisy w katalogu" podczas pisania "wszystkich plików"? Myślę, że ta ostatnia ma zastosowanie. –

Odpowiedz

25

man 3 chmod zawiera informacje, których szukasz.

chmod -R +r directory 

opcja -R mówi chmod działać rekurencyjnie.

+2

Historicaly '-r' jest dla * operacji rekursywnej * i' -R' dla * niebezpiecznej rekurencji *. Jeśli do 'chmod' i' chown' użyte są wielkie litery 'R', to dlatego, że wolimy używać bardziej precyzyjnych operacji, takich jak użycie' find'. Zobacz moją odpowiedź! –

7

jako katalog może zawierać linki i/lub wiązać wierzchowce, stosowanie find mógłby zapewnić najlepszych ziarnistości w tym, co robić i czego nie robić ....

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

Aby wykluczyć ścieżki pod mocowaniem punkty:

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

Aby wykluczyć pewne konkretne pliki (.htaccess dla próbki):

find directory \(-type f -o -type d \) ! -name '.htaccess' -print0 | 
    xargs -0 chmod ugo+r 
Powiązane problemy