Як застосовувати рекурсивно chmod каталоги, не впливаючи на файли?


18

Після того, як я звернусь chmod -Rдо каталогу, дозволи змінюються на все, що знаходиться всередині (файли та каталоги). Як я можу додати xдозволи до виконання / пошуку ( ) до каталогів без зміни файлів?

Відповіді:


13

Ви можете використовувати find .

find ./ -type d -execdir chmod 750 {} +

Де 750 - це режим, який ви хочете застосувати, а "./" - каталог, в якому ви будете рекурсивно шукати.

EDIT : Завдяки @Gilles та find (1) я переглянув це для додаткової безпеки та продуктивності.


@Gilles Дякую, не так часто я дізнаюся щось нове про інструменти Unix :-) Це приголомшливо. Крім того, читаючи документацію пошуку , слід дійсно використовувати -execdir замість цього.
ewindisch

7

У цьому конкретному випадку ви можете використовувати Xзамість цього xлише додавання бітів до каталогів або файлів, у яких вже встановлений виконуваний біт для певного користувача (тобто chmod -R +X my_dir).

В цілому (наприклад , якщо ви хочете , щоб все каталоги читаються , не зачіпаючи файли), можна або використовувати findз -type dабо якщо ви використовуєте ЗШ (або Баш 4 з shopt -s globstar) в **/Glob (обидва без проходження -Rпрапора до chmod).


@Gilles: Добре, я додав це до відповіді.
sepp2k

1
"використовувати X замість x, що додає лише біти до каталогів або файлів, у яких вже встановлений виконуваний біт для певного користувача" - Дякую! Я дуже пропустив цю річ!
Іван
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.