Il s’agit peut-être d’une question en double mais je n’ai pas trouvé la solution à ce problème. Je souhaite copier les fichiers des 3 derniers mois d’un répertoire à un autre, mais je n’ai trouvé que la liste des fichiers à l’aide de la commande suivante.
find . -mtime -90 -ls
Je ne sais vraiment pas comment copier les fichiers en utilisant -mtime
. Je suis nouveau sur Linux, aidez-moi s'il vous plaît.
Utilisez l'option -exec
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).
On peut également sélectionner la date et l'heure exacte autrement que de revenir à un certain nombre de jours
cp `find . -type f -newermt '18 sep 2016 20:05:00'` FOLDER
Ci-dessus copie tous les fichiers du répertoire créés après le 18 septembre 2016 à 20:05:00 dans le DOSSIER (3 mois avant aujourd'hui :)
Soyez prudent avec le symbole de la commande find, ce n'est PAS celui-ci: ' C'est ceci, un backtick: ` La sélection de date est avec ceci:'
Si vous avez des fichiers avec des espaces, des sauts de ligne, des tabulations ou des caractères génériques dans leurs noms, vous pouvez utiliser l'une des solutions de Stéphane Chazelas: la première concerne GNU, la deuxième concerne 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 "$@" FOLDER' sh {} +
Utilisez cette commande:
for i in `ls -lrt | grep "jul" | awk '{print $9}' `; do cp $i* /some/folder/; done
Je suppose que je voudrais d'abord stocker la liste des fichiers temporairement et utiliser une boucle.
find . -mtime -90 -ls >/tmp/copy.todo.txt
Vous pouvez lire la liste, si elle n’est pas trop grande, avec
for f in `cat /tmp/copy.todo.txt`;
do echo $f;
done
Remarque: les guillemets autour du chat ... sont des guillemets arrières, souvent situés dans le coin supérieur gauche du clavier
Vous pouvez ensuite remplacer la commande echo par une commande de copie:
for f in `cat /tmp/copy.todo.txt`;
do cp $f /some/directory/
done
Ex: sélectionnez le jour 09/08/2017
ls -l
-rw-rw-rw- 1 root system 943 Aug 09 02:59 File
for j in `ls -l |awk '{ if ($7 == "09") print $9}'`
do
mv $j $Destination;
done