Você pode usar a capacidade do GNU find
de não seguir um caminho de diretório para outro sistema de arquivos:
find /some/path -mount -exec chgrp groupname {} +
Estamos usando o AWS S3 Buckets e, quando você tenta fazer um chgrp
recursivo, ele é rotulado no bucket S3 (essencialmente) indefinidamente. É possível executar chgrp
ao excluir um diretório?
A resposta é o uso do bash extglob
e funciona aqui, assim como muitas outras funções do Linux que aceitam a designação de arquivo no formulário /directory/*
.
É possível alterar o grupo de arquivos avidamente em um diretório, excluindo um diretório, transformando primeiro extglob
em e incluindo o nome do diretório a ser excluído:
shopt -s extglob
chgrp /directory/!(exclude)
E quando terminar, desative a opção com o sinalizador -u
.
shopt -u extglob
Para uma útil postagem no Stack, veja " Como posso usar curingas inversos ou negativos quando a correspondência de padrões em um unix / linux shell? "