Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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]

En 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]

En 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