Lorsque j'exécute la commande find . -mtime -60
Je reçois la liste des fichiers modifiés au cours des 60 derniers jours.
Ainsi, lorsque j'exécute find . -mtime -60 -exec cp {} /tmp/1 \;
Je peux copier ces fichiers dans un nouveau répertoire pour traitement
Cependant, si je veux conserver les horodatages, je ne peux pas copier uniquement les fichiers nécessaires lorsque j'exécute find . -mtime -60 -exec cp -LR --preserve=timestamps {} /tmp/2 \;
Ce qui finit par arriver, c'est que TOUS les fichiers du répertoire source sont copiés au lieu de seulement les fichiers dont j'ai besoin.
Une solution ici ?
Réponse acceptée :
Ce qui se passe ici, c'est que lorsque vous utilisez le -R
option pour cp
et fournissez un répertoire en argument, il copie tout dans ce répertoire. De plus, cela ne préservera pas la structure des répertoires car tous les fichiers des répertoires inférieurs seront copiés directement dans /tmp/2
. C'est peut-être ce que vous voulez (voir la réponse de X Tian pour savoir comment procéder de cette façon), mais attention si des fichiers ont le même nom, l'un écrasera l'autre à la destination.
Pour conserver la structure des répertoires, vous pouvez utiliser cpio
:
find . -mtime -60 -print0 | cpio -0mdp /tmp/2
Si le -0
(ou équivalent) n'est pas disponible, vous pouvez le faire, mais attention aucun de vos noms de fichiers ne contient de retour à la ligne :
find . -mtime -2 | cpio -mdp /tmp/2
cpio
devrait également prendre en charge le -L
option, mais soyez prudent avec cela car dans certains cas, cela peut provoquer une boucle infinie.