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

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

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

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

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

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

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

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

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

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

5
задан Community
источник

2 ответов

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

find . -type d \( -path ./node_modules \) -prune -o -exec chmod 644 {} \;
1
отвечен Alex 2017-01-08 07:03:00
источник

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

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 2017-01-08 07:06:09
источник

Другие вопросы bash chmod find linux permissions