Как chmod все папки рекурсивно исключая все папки в определенной папке?

Я хотел бы chmod все папки и подпапки в пределах определенной папки, за исключением того, что я хочу, чтобы исключить одну папку (и все подпапки он содержит).

то, что я до сих пор, является взлом следующих решений от StackOverflow:

вот что я придумал пока:

найти . -тип D ( -путь ./node_modules)- prune-o-print-exec chmod 644 {};

проблема с или без -print появляется следующее сообщение об ошибке:

найти: отсутствует аргумент' - exec'

следующая строка имеет ожидаемые результаты, которые мне нужны -exec chmod 644{}; читать :

найти . -тип D ( -путь ./ node_modules ) - prune-o - print

что я упустил в этой строке передать данные -exec ?

14
задан Community
03.03.2023 6:57 Количество просмотров материала 2925
Распечатать страницу

2 ответа

удалить -print, escape ( and ) и добавить пробел после {}

find . -type d \( -path ./node_modules \) -prune -o -exec chmod 644 {} \;
1
отвечен Alex 2023-03-04 14:45

после некоторой игры, я обнаружил, что для меня работает следующее:

chmod все файлы рекурсивно, исключая папку

find . -not -path "*/node_modules*" -type f -exec chmod 644 {} \;

chmod все папки рекурсивно, исключая папку

find . -not -path "*/node_modules*" -type d -exec chmod 755 {} \;
0
отвечен Kraang Prime 2023-03-04 17:02

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

bash
chmod
find
linux
permissions
Вверх