
Eu tenho um diretório que possui cerca de 50 mil diretórios e cerca de 1 milhão de arquivos.
Quero alterar o proprietário (ou permissão) de todos os arquivos, mas não dos diretórios. Isso ocorre porque estou tentando SCP arquivos adicionais de um servidor remoto (~ 150 mil diretórios e ~ 3,6 milhões de arquivos).
O diretório que tenho faz parte do diretório remoto, mas o scp falhou...
Se eu executar o SCP novamente, ele recomeçará substituindo os arquivos que já copiei do diretório remoto.
Responder1
Você pode usar find
, tem a vantagem adicional de ARG_MAX
não ser acionado no processo. Do diretório pai:
find . -type f -exec chown newowner {} +
Para chmod
:
find . -type f -exec chmod 644 {} +
-type f
serão find
apenas arquivos.
Responder2
Outra alternativa é usar xargs
. Você precisará usar a -print0
opção with find
e uma -0
opção correspondente de xargs
:
find . -type f -print0 | xargs -0 chown newuser:newgroup
De man find
:
-imprimir0
imprima o nome completo do arquivo na saída padrão, seguido porum caractere nulo. Essepermite nomes de arquivos que contenham novas linhas ou outros tipos de espaço em brancopara ser interpretado corretamente por programas que processam a saída find. Esta opção corresponde à opção -0 de xargs.
xargs
também irá lidar corretamente com ARG_MAX
.