chmod-файли лише у всіх підкаталогах


54

Будь-хто допоможе мені з chmod, у мене є така файлова структура

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

Як мені chmod 655 для всіх файлів під dir1 та всім subdir? Таким чином, всі файли матимуть 655 дозволу, і всі dir залишаться такими, якими вони були.

Дякую

Відповіді:


108

Краще використовувати

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

Інше запропоноване рішення від @sagarchalise не працюватиме, якщо назви файлів містять пробіли або починаються з тире.


16
Так само для chmod усіх каталогів ви можете використовувати find . -type d -exec chmod 755 {} +для зміни всіх каталогів на 755.
Kris Harper

2
Що таке + для?
Брецький

3
@Brettski: +знак розширюється findна список шляхів до файлу (або його частини, якщо занадто довгий).
enzotib

3
Що таке - для?
Орієнт

2
--Чи означає кінець параметрів командного рядка. Це запобігає інтерпретації файлу, який починається з дефісу, як варіант командного рядка, як це відбудеться після --.
Тім Тісдалл

8

Я думаю, що заходить всередину dir1і

find . -type f | xargs chmod 655

зробить трюк.


це теж працює, але у мене є попередження з "Немає такого файлу чи каталогу"
netic

@manetic: це залежить, як було сказано у моїй відповіді, від назви файлів, що містять пробіли.
enzotib

4
Для повноти, змінивши її, щоб знайти. -типу f -принт0 | xargs -0 chmod 655 вирішив би питання про космос, я вважаю, хоча відповідь @ enzotib є більш коротким
матовий фрік

про що говорив мат фрік
Сергій Колодяжний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.