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 03/03/2013, à 14:30

adgenodux

[PROBLEME] Trouver et effacer des fichiers par date

Bonjour,

Comme dit en titre, je cherche le moyen de lister et effacer des fichiers selon une date précise.

J'ai regardé du côté de locate, find ou encore ls mais je ne parviens pas à composer une ligne d'instruction, j'ai des erreurs de syntaxe...

Pourriez-vous m'aider ?

Merci

Adgenodux

Hors ligne

#2 Le 03/03/2013, à 15:48

pingouinux

Re : [PROBLEME] Trouver et effacer des fichiers par date

Bonjour,
Qu'as-tu essayé comme commandes ?
Sinon, pour avoir la liste des fichiers modifiés le 24 janvier 2013, par exemple :

while read fichier; do echo "$fichier"; done < <(find -printf "%p %TY-%Tm-%Td\n" | sed -n 's/ 2013-01-24$//p')

et pour les supprimer si c'est bon

while read fichier; do rm "$fichier"; done < <(find -printf "%p %TY-%Tm-%Td\n" | sed -n 's/ 2013-01-24$//p')

Hors ligne

#3 Le 03/03/2013, à 15:59

adgenodux

Re : [PROBLEME] Trouver et effacer des fichiers par date

Bonjour pingouinux et merci pour l'info

c'est juste ce qu'il me faut.... smile

Hors ligne

#4 Le 03/03/2013, à 19:44

nesthib

Re : [PROBLEME] Trouver et effacer des fichiers par date

@pingouinux : j'avoue que ta solution me laisse perplexe… pourquoi la boucle ? pourquoi sed -n/p au lieu de grep ? tongue

Après j'avoue que find est un peu cryptique pour chercher par date de modification, c'est simple quand on spécifie en terme de jours par rapport au jour actuel :
Les fichiers modifiés entre 25 et 30 jours plus tôt :

find . -mtime -30 -mtime +25 …

Pour faire par date avec une précision à la seconde, il y a une astuce à connaître :

touch -t 201301011242.00 /tmp/ancien
touch -t 201301051142.00 /tmp/récent
find . -newer /tmp/ancien ! -newer /tmp/récent

et une fois qu'on est sûr, pour les supprimer

find . -newer /tmp/ancien ! -newer /tmp/récent -delete

ou, pour plus de sécurité :

find . -newer /tmp/ancien ! -newer /tmp/récent -exec rm -i {} \;

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#5 Le 03/03/2013, à 20:30

pingouinux

Re : [PROBLEME] Trouver et effacer des fichiers par date

nesthib  #4 a écrit :

@pingouinux : j'avoue que ta solution me laisse perplexe… pourquoi la boucle ? pourquoi sed -n/p au lieu de grep ?

C'est vrai que pour avoir la liste, la boucle n'est pas nécessaire.

find -printf "%p %TY-%Tm-%Td\n" | sed -n 's/ 2013-01-24$//p'

Je ne m'en suis pas sorti avec le grep pour ne récupérer que le nom du fichier, s'il contient des espaces.

Ajouté :
Voilà

find -printf "%p %TY-%Tm-%Td\n" | grep -Po '^.* (?=2013-01-24$)'

Dernière modification par pingouinux (Le 03/03/2013, à 21:36)

Hors ligne

#6 Le 03/03/2013, à 21:27

adgenodux

Re : [PROBLEME] Trouver et effacer des fichiers par date

c'est mon prob aussi d'arriver à composer une commande tellement on peut (ou doit !) y mettre d'éléments...

c'est puissant mais il faut déjà bien maîtriser la ligne de commande pour arriver à composer des instructions de ce type...

merci en tous cas pour les précisions...

Hors ligne