Remova -print
, escape ( and )
e adicione espaço após {}
find . -type d \( -path ./node_modules \) -prune -o -exec chmod 644 {} \;
Eu gostaria de chmod todas as pastas e subpastas dentro de uma pasta específica, exceto que eu desejo excluir uma pasta (e todas as subpastas que ela contém).
O que eu tenho até agora é um truque das seguintes soluções do StackOverflow:
Aqui está o que eu criei até agora:
find . -type d ( -path ./node_modules ) -prune -o -print -exec chmod 644 {}\;
O problema é com ou sem -print
Eu recebo o seguinte erro:
find: missing argument to '-exec'
A linha a seguir tem os resultados esperados Eu preciso de -exec chmod 644{}\;
para ler:
find . -type d ( -path ./node_modules ) -prune -o -print
O que estou faltando nessa linha para enviar os dados para -exec
?
Depois de algumas brincadeiras, descobri que o seguinte funcionou para mim:
find . -not -path "*/node_modules*" -type f -exec chmod 644 {} \;
find . -not -path "*/node_modules*" -type d -exec chmod 755 {} \;
Tags permissions chmod bash find linux