#1 Le 18/05/2022, à 09:58
- arnoxz
creer une archive de fichiers en fonction d'une date dans un dir
Bonjour,
En ligne de commande, comme dans le titre de la demande, je voudrais depuis un répertoire archiver (7z, zip, tar,...) tous les fichiers d'une date précise, et éventuellement les supprimer une fois archivés ? J'ai essayé avec find, aussi avec une boucle entre 2 dates de comparaison mais l'exécution de commande (zip, mv, rm,...) n'est pas prise en compte dans ma boucle...
merci
Hors ligne
#2 Le 18/05/2022, à 10:37
- FrancisFDZ
Re : creer une archive de fichiers en fonction d'une date dans un dir
Bonjour,
Quelle est la date de comparaison ? date de création, date de dernière modification ou date de dernier accès ? (en principe, il devrait s'agir de la date de dernière modification, mais les 3 sont accessibles)
-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]
Hors ligne
#3 Le 18/05/2022, à 10:43
- arnoxz
Re : creer une archive de fichiers en fonction d'une date dans un dir
quand je procède à ls -ltra, je voudrais que tous les fichiers qui sortent la date du 09 mai 2022 soient archivés puis effacés ou déplacés dans un autre répertoire (en gardant l'archive bien sur)...
Hors ligne
#4 Le 18/05/2022, à 11:08
- FrancisFDZ
Re : creer une archive de fichiers en fonction d'une date dans un dir
Dans ce cas, il s'agit bien de la date de dernière modification (la plus couramment utilisée)
Il va probablement falloir créer un fichier bash en sélectionnant d'abord la sortie de "ls -ltra". Je laisse le soin aux spécialistes du bash de t'aider à construire ce fichier
-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]
Hors ligne
#5 Le 18/05/2022, à 17:29
- kamaris
Re : creer une archive de fichiers en fonction d'une date dans un dir
Voilà l'idée en trois temps :
find -type f -printf '%TF %p\0' | sed -nz '/^2022-05-18 /s///p' | xargs -0 tar --remove-files -czf archive.tar.gz
Il te reste à ajuster la date de référence dans sed, et éventuellement le format de date dans find : pour ça, voir le man.
Hors ligne
#6 Le 18/05/2022, à 20:23
- Watael
Re : creer une archive de fichiers en fonction d'une date dans un dir
dateRef='2022-50-18'
touch -d $(date -d "$dateRef -1day") /tmp/avant
touch -d $(date -d "$dateRef +1day") /tmp/aprEs
find -type f -newer /tmp/avant -not -newer /tmp/aprEs -print0 | tar --null -T - -czf archive.tar.gz
rm /tmp/a{vant,prEs}
?
c'est un peu plus long à taper, mais sed n'aura pas à traiter une liste de fichiers éventuellement très longue.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne