Eu quero alterar as permissões em todas as pastas / arquivos, excluindo alguns deles

1

Por favor, consulte a hierarquia de pastas abaixo.

folder1
-> file11.txt
-> file12.txt
-> folder11.backup
   -> file111.txt
   -> file112.txt
   -> file113.bak
   -> folder111
   -> and many more folders and files

folder2
-> file21.txt
-> file22.txt
-> file23.bak

folder2.backup
-> file111.txt
   -> file112.txt
   -> folder111
   -> folder112
      -> file1121.bak
      -> file1122.txt
   -> and many more folders and files

folder3
-> folder31
   -> folder311
      -> folder3111.backup
         -> file3111.txt
         -> file3112.txt
         -> folder3111 
         -> and many more folders and files
      -> folder3112
         -> file31121.bak
         -> file31121.txt

Eu quero alterar a propriedade (chown) e as permissões (chmod) com as seguintes regras:

  1. todas as pastas / subpastas, EXCETO as pastas que terminam em ".backup". Na minha hierarquia de pastas de exemplo, as seguintes pastas e seu conteúdo serão ignoradas: folder11.backup, folder2.backup e folder3111.backup

  2. todos os arquivos EXCETO aqueles que possuem a extensão ".bak". Mas se o arquivo, independentemente de sua extensão, estiver dentro de uma pasta .backup, eles serão excluídos por causa da regra 1.

Obrigado pela ajuda. :)

    
por mrjayviper 07.10.2016 / 13:42

1 resposta

2

(1) Os diretórios:

find . -mindepth 1 -type d -not -name '*.backup' \
    -not -path '*.backup/*' -print0 | xargs -0 chmod MODE

(2) Os arquivos:

find . -type f -not -name '*.bak' \
    -not -path '*.backup/*' -print0 | xargs -0 chmod MODE

Para testar, você pode executar as linhas de comando com ls -ld em vez de chmod ... .

    
por 07.10.2016 / 13:56