pliki chmod tylko we wszystkich podkatalogach


54

Proszę, pomóżcie mi z chmod, mam następującą strukturę plików

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

Jak przeskoczyć do wszystkich plików w katalogu dir1 i wszystkich podkatalogach? Tak więc wszystkie pliki będą miały uprawnienia 655, a wszystkie katalogi pozostaną bez zmian.

Dziękuję Ci

Odpowiedzi:


108

Lepszy w użyciu

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

Inne proponowane rozwiązanie z @sagarchalise nie będzie działać, jeśli nazwy plików zawierają spacje lub zaczynają się od myślnika.


16
Podobnie, aby przeskoczyć wszystkie katalogi, możesz find . -type d -exec chmod 755 {} +zmienić wszystkie katalogi na 755.
Kris Harper

2
Do czego służy +?
Brettski

3
@Brettski: +znak jest rozwijany finddo listy ścieżek plików (lub jej części, jeśli jest za długa).
enzotib

3
Do czego służy?
Orient

2
--Wskazuje koniec opcji wiersza poleceń. Zapobiega to interpretacji pliku rozpoczynającego się od myślnika jako opcji wiersza poleceń, tak jak w przypadku pliku --.
Tim Tisdall

8

Myślę, że wchodząc do środka dir1i

find . -type f | xargs chmod 655

da rade.


to też działa, ale otrzymałem ostrzeżenie z informacją „Brak takiego pliku lub katalogu”
netic

@manetic: zależy, jak powiedziano w mojej odpowiedzi, od nazw plików zawierających spacje.
enzotib

4
Dla kompletności, zmieniając go, aby znaleźć. -type f -print0 | xargs -0 chmod 655 naprawiłbym problem z przestrzenią, jak sądzę, chociaż odpowiedź @ enzotib jest bardziej zwięzła
matt freake

co powiedział Matt Freake
Sergiy Kolodyazhnyy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.