2017-10-02 5 views
0

Je n'ai pas trouvé de bonne réponse à cette question, alors gardez-moi car c'est une question assez simple.Copier un fichier d'un sous-répertoire spécifique vers d'autres sous-répertoires spécifiques

J'ai des fichiers dans des répertoires spécifiques, et j'ai besoin de les copier dans d'autres répertoires spécifiques en utilisant cron à un moment précis. Comme ceci:

/var/www/html/files/client1/1.txt 
/var/www/html/files/client2/1.txt 
/var/www.html/files/client3/1.txt 
... and so on for many directories 

Chaque fichier "1.txt" est spécifique à un client, il doit donc être copié spécifiquement dans un dossier de destination.

/var/www/html/desintation/client1/1.txt 
/var/www/html/desintation/client2/1.txt 
/var/www/html/desintation/client3/1.txt 
...and so on... 

Si vous voulez juste me pointer dans un endroit pour commencer, c'est cool avec moi. Mais ma question est essentiellement, comment puis-je m'assurer que les fichiers client1 finissent toujours dans la destination client1? Parce que cela me semble être avec un caractère générique, je ne peux pas en tenir compte et il y a des chances qu'un fichier se retrouve dans le mauvais répertoire.

+0

Je serais enclin à quelque chose si simple si vous avez rien d'autre que les répertoires client sous 'files'. Vous pouvez simplement faire 'cp -ua/var/www/html/fichiers/*/var/www/html/desintation' –

Répondre

0

En supposant que vous êtes dans votre/var/www/html/fichiers, peut-être envisager quelque chose comme ce qui suit:

find . -name 1.txt -exec cp \"{}\" \"/var/www/html/destination/{}\" \; 

Le "trouver 1.txt -nom." Bit trouvera une liste de rapport chemins d'accès aux fichiers nommés 1.txt à partir du répertoire courant:

./client1/1.txt 
./client2/1.txt 
./client3/1.txt 

la partie « exec » va utiliser pour exécuter des commandes comme:

cp "./client1/1.txt" "/var/www/html/destination/./client1/1.txt" 
cp "./client2/1.txt" "/var/www/html/destination/./client2/1.txt" 
cp "./client3/1.txt" "/var/www/html/destination/./client3/1.txt" 

Vous pouvez expérimenter en ajoutant un écho pour voir quelles commandes il sortie si vous exécutiez réellement:

find . -name 1.txt -exec echo cp \"{}\" \"/var/www/html/destination/{}\" \;