
Estou em um servidor dedicado usando CentOS e neste servidor tenho mais de 5.000 diretórios em um diretório principal.
No diretório principal eu tenho um arquivo index.php
. Eu gostaria de copiar isso index.php
para todos os mais de 5.000 diretórios, mas a única maneira que conheço é fazendo isso manualmente.
Existe uma maneira através da linha de comando de inserir algo parecido cp
e fazê-lo funcionar no diretório? Eu copiaria tudo em todos os diretórios e subdiretórios dentro deste diretório principal em que estou começando.
Responder1
find . -mindepth 1 -type d -exec echo cp index.php {} \;
O comando acima copiaria o index.php
arquivo do seu diretório atual para todos os subdiretórios, recursivamente – mas não imediatamente.
Quando você tiver certeza de que todos os comandos de cópia corretos serão impressos, remova-o echo
e execute-o. echo
é apenas uma salvaguarda para mostrar o que todo o comando faria antes de realmente fazer algo que você não deseja.
Outra abordagem interessante – obrigado @RedGrittyBrick – serialink simbólicoos arquivos em vez de simplesmente copiá-los. Dessa forma, os index.php
arquivos nos subdiretórios seriam todos apenas um atalho, por assim dizer, para aquele no diretório raiz e não duplicados. Para fazer isso, no comando acima, mude cp
para ln -s
. Dessa forma, quando você altera o index.php
arquivo "mestre", todos os outros nos subdiretórios ainda apontariam para ele e, portanto, também mudariam automaticamente quando visualizados.
Para completar, todo o comando, dividido, funciona assim:
find .
, pesquise no diretório atual-mindepth 1
, acessando pelo menos um diretório-type d
, encontre apenas diretórios-exec …
, execute o comandoecho cp index.php {}
, onde{}
é substituído por todos os diretórios encontrados. Este comando é chamado várias vezes, uma vez para cada subdiretório.