Forum Linux.général find : fichiers des N derniers jours avant un fichier

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
13
sept.
2016

j'ai un fichier créé dimanche exemple /var/backup/complete_2016-09-11.tar.gz
avant j'ai des sauvegardes rendues inutiles du fait de la sauvegarde complete de dimanche.

dimanche 11 : complete_2016-09-11.tar.gz
samedi 10 : complete_2016-09-10.tar.gz
vendredi 9: complete_2016-09-09.tar.gz

je veux lister les completes de samedi, vendredi, jeudi et plus anciennes.

je fais

find . -maxdepth 1 -name "complete*" ! -newer complete_2016-09-11.tar.gz

la commande m'inclue le fichier de référence qui est celui de la derniere sauvegarde, et je le veux pas

merci de vos réponses.

  • # head ou tail ou grep

    Posté par  . Évalué à 2. Dernière modification le 13 septembre 2016 à 20:26.

    ton find te donne une liste,
    dans un ordre ou dans l'ordre,

    avec head ou avec tail va pouvoir prendre la liste moins la premiere ou la derniere ligne.

    avec grep , tu peux simplement supprimer le "motif" du nom de fichier de cette liste

    • [^] # Re: head ou tail ou grep

      Posté par  . Évalué à 1.

      merci de votre réponse.

      je tiens que ca soit la commande find qui affiche directement les bonnes lignes. C'est pour pas me poser de questions.

      là actuellement j'enchaine le find … | grep -v "complete_2016-09-11"

      • [^] # Re: head ou tail ou grep

        Posté par  . Évalué à 2.

        bah c'est bien comme ca non ?

        ca ne me semble pas deconnant

        find ..... $lefichierrepere | grep -v $lefichierrepere

        bon apres comme tu veux les N fichiers les plus anciens, il te faudra de toute facon un head ou un tail pour prendre les N lignes qui t'interessent

        • [^] # Re: head ou tail ou grep

          Posté par  . Évalué à 2.

          je vois deux façons de le faire directement dans find.

          En excluant le fichier de référence :

          find . -maxdepth 1 -name "complete*" ! -newer complete_2016-09-11.tar.gz ! -name complete_2016-09-11.tar.gz

          ou en prenant l'avant-dernier fichier comme référence :

          find . -maxdepth 1 -name "complete*" ! -newer complete_2016-09-10.tar.gz

          Personnellement, je préférerais la seconde forme, et je garderais plus qu'une seule sauvegarde complète s'il n'y a pas de problèmes d'espace disque.

          • [^] # Re: head ou tail ou grep

            Posté par  . Évalué à 2.

            il doit y avoir une erreur de copier/coller car je ne vois pas la difference entre sa version (qui retourne le fichier reference)

            find . -maxdepth 1 -name "complete*" ! -newer complete_2016-09-11.tar.gz

            et ta seconde version qui est censée exclure ce fichier

            find . -maxdepth 1 -name "complete*" ! -newer complete_2016-09-10.tar.gz

          • [^] # Re: head ou tail ou grep

            Posté par  . Évalué à 1.

            merci

            à vous lire je pense à

            find . -maxdepth 1 ( -name "complete_2016-09-11.tar.gz" -prune -o -name "complete*" ! -newer complete_2016-09-11.tar.gz -print )

        • [^] # Re: head ou tail ou grep

          Posté par  . Évalué à 3.

          Ben tout dépend de ce que tu veux en faire : si tu veux lancer un -exec dans ton find, c'est mieux de le faire direct plutôt que d'enchainer les grep. Ca fait moins de pages de man à lire quand tu veux comprendre ce qui est fait.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.