Como chmod todas as pastas recursivamente excluindo todas as pastas dentro de uma pasta específica?

1

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 ?

    
por Kraang Prime 08.01.2017 / 05:10

2 respostas

1

Remova -print , escape ( and ) e adicione espaço após {}

find . -type d \( -path ./node_modules \) -prune -o -exec chmod 644 {} \;
    
por 08.01.2017 / 08:03
0

Depois de algumas brincadeiras, descobri que o seguinte funcionou para mim:

chmod todos os arquivos recursivamente excluindo pasta

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

chmod todas as pastas recursivamente excluindo pasta

find . -not -path "*/node_modules*" -type d -exec chmod 755 {} \;
    
por 08.01.2017 / 08:06