1

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

Пока у меня есть взлом следующих решений от StackOverflow:

Вот что я придумала до сих пор:

находить . -type d (-path ./node_modules) -prune -o -print -exec chmod 644 {}\;

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

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

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

находить . -type d (-path ./node_modules) -prune -o -print

Чего мне не хватает в этой строке, чтобы передать данные в -exec ?

2 ответа2

1

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

find . -type d \( -path ./node_modules \) -prune -o -exec chmod 644 {} \;
1

Поработав, я обнаружил, что у меня работает следующее:

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .