Como substituir o diretório em vários locais com 1 diretório de origem

Como substituir o diretório em vários locais com 1 diretório de origem

Então, hoje descobri que um dos meus arquivos PHP estava desatualizado, então tive que sobrescrever o phpthumbdiretório em todo o servidor.

Vários sites usam essa pasta em vários locais desconhecidos. Como posso substituir todos esses diretórios de um caminho de origem? (ou seja: /home/test/testuser/phpthumb/para /home/*/*/phpthumb/)

Responder1

Isso deve funcionar:

echo /home/*/*/phpthumb | xargs -t -n 1 cp -r /home/test/testuser/phpthumb/*

Você tem que trabalhar com xargs. Infelizmente cpnão é possível copiar para vários destinos. cppode lidar com múltiplas fontes.

Explicação:

  • echo /home/*/*/phpthumb: lista todos phpthumbos diretórios
  • xargs -t -n 1: xargs deve chamar cpcada linha separadamente
  • cp -r /home/test/testuser/phpthumb/*o comando xargsdeve chamar. Observe que o diretório de destino será anexado no final por xargs.

Responder2

tente isto:

$ find /home -name "phpthumb" -type d -not -path "*test/testuser/phpthumb" \
    -exec cp /home/test/testuser/phpthumb/* {} \;

findcomando procura phpthumbem /home:

  • -type dselecione a pasta
  • -not -pathexcluitest/testuser/phpthumb

Para cada pasta execute cpo comando. Se test/testuser/phpthumbfor uma árvore com subpasta, adicione -Ra opção cp.

informação relacionada