Je voudrais d'abord stocker temporairement la liste des fichiers et utiliser une boucle.
find . -mtime -90 -ls >/tmp/copy.todo.txt
Vous pouvez lire la liste, si elle n'est pas trop longue, avec
for f in `cat /tmp/copy.todo.txt`;
do echo $f;
done
Remarque :les guillemets autour de chat... sont des backticks, souvent dans le coin supérieur gauche du clavier.
Vous pouvez alors remplacer la commande echo par une commande copy :
for f in `cat /tmp/copy.todo.txt`;
do cp $f /some/directory/
done
On peut aussi sélectionner la date et l'heure exactes sans remonter à un certain nombre de jours :
cp `find . -type f -newermt '18 sep 2016 20:05:00'` FOLDER
Ce qui précède copie tous les fichiers du répertoire qui ont été créés après le 18 septembre 2016 20:05:00 dans le FOLDER
(trois mois avant aujourd'hui :)
Soyez prudent avec le symbole de la commande de recherche. Ce n'est pas celui-ci :'
C'est ceci, un backtick :`
La sélection de la date se fait avec ceci :'
Si vous avez des fichiers avec des espaces, des retours à la ligne, des tabulations ou des caractères génériques dans leurs noms, vous pouvez utiliser l'une ou l'autre des solutions de Stéphane Chazelas. Le premier est pour GNU, et le second est pour GNU ou certains BSD :
find . -type f -newermt '18 sep 2016 20:05:00' -exec cp -t FOLDER {} +
find . -type f -newermt '18 sep 2016 20:05:00' -exec sh -c 'cp "[email protected]" FOLDER' sh {} +
Utilisez cette commande :
for i in `ls -lrt | grep "jul" | awk '{print $9}' `; do cp $i* /some/folder/; done
Utilisez le -exec
option pour find
:
find . -mtime -90 -exec cp {} targetdir \;
-exec
copierait chaque résultat renvoyé par find
dans le répertoire spécifié (targetdir
dans l'exemple ci-dessus).