Как рекурсивно изменить все папки, исключая все папки внутри определенной папки?

2246
Kraang Prime

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

Пока у меня есть взлом следующих решений от 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?

1

2 ответа на вопрос

1
Alex

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

find . -type d \( -path ./node_modules \) -prune -o -exec chmod 644 {} \; 
Ваше решение сработало. Спасибо. Я был в процессе написания своего решения, когда вы опубликовали это. Принятие в качестве решения и голосования. Kraang Prime 7 лет назад 0
0
Kraang Prime

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

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

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

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

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

Похожие вопросы