Forum Linux.debian/ubuntu Commande find dans script debian 7 [RESOLU]

Posté par  . Licence CC By‑SA.
Étiquettes :
0
8
juin
2015

Bonjour,

Je créé un script de sauvegarde avec une purge.

Pour la purge j'utilise la commande suivante :

find /$backup_dir -type f -prune -mtime +7 -exec rm -f {} \;

J'ai essayé différents syntaxes mais j'ai toujours le message suivant :

find: Paramètre manquant pour « -exec »

Pouvez-vous m'aider SVP.

Merci par avance,

  • # ca dit quoi sans l'exec ?

    Posté par  . Évalué à 2.

    sans faire l'exec, est-ce que ca trouve des choses qui seraient "à supprimer" ?

    find /$backup_dir -type f -prune -mtime +7

    • [^] # Re: ca dit quoi sans l'exec ?

      Posté par  . Évalué à 1.

      Merci pour ta réponse

      ça met paramètre manquant pour -mtime

      • [^] # Re: ca dit quoi sans l'exec ?

        Posté par  . Évalué à 2.

        etrange car chez moi cette syntaxe fonctionne, avec et sans exec
        avec et sans $backup_dir

        comme evoqué plus haut, si tu retapes ta ligne, pour etre sur d'avoir de vrais espaces entre mtime et +7 par exemple,

        ca fonctionne ?

  • # protéger les caractères

    Posté par  . Évalué à 2.

    Les { et } sont aussi des caractères spéciaux du shell, il faut les protéger comme le point-virgule.

    Ceci étant dit (ou plutôt écrit), find a une action -delete, qui t'évitera de lancer autant de fois rm que tu trouve de fichiers (ce qui peut être largement mitigé en passant à la variante "-exec command {} +")

  • # Prudence!

    Posté par  . Évalué à 7.

    Il faut faire super attention quand on supprime à coup de find

    Une seule erreur et ça fait un carnage…

    Par exemple, tu écrit find /$backup_dr au lieux de find /$backup_dir et hop, tout cassé…

    Oui, il y a une histoire douloureuse qui motive mon commentaire…

    Please do not feed the trolls

    • [^] # Re: Prudence!

      Posté par  . Évalué à 4.

      pire, la meme ligne avec un $backup_dir vide, et ta ligne devient
      find / -type f -prune -mtime +7 -exec rm -f {} \;

      • [^] # Re: Prudence!

        Posté par  . Évalué à 2.

        Héhé c'est arrivé à un collègue en prod ça :) et vu les mails, ça lui était arrivé un vendredi: il l'a bien cherché, je me moque encore de lui de temps en temps avec ça, alors qu'on est tous les deux partis :p

        Enfin, c'était pas avec find, mais ça revenais au même.

  • # Magnifique virus !!!

    Posté par  . Évalué à -2.

    Il fallait oser :D

    • [^] # Re: Magnifique virus !!!

      Posté par  . Évalué à 2. Dernière modification le 09 juin 2015 à 08:36.

      Franchement… qualifier ça de virus… c'est stupide.

      Ouai, désolé, je suis dur. Mais, ici, c'est un forum de techniciens, on est censé savoir qu'exécuter une commande sans la comprendre à la fois stupide et dangereux.

      Accessoirement, cette commande n'est pas un virus. Oui, c'est moi qui t'ai «moinssé» ou plutôt, t'ai «impertinenté». Une fois encore, ici, c'est un forum technique. Une commande, aussi néfaste qu'elle soit, n'est un virus que si elle s'intègre d'elle-même dans un autre exécutable (binaire ou non) sur le même système (sur un système tiers, c'est alors un vers, qui peut éventuellement être également un virus).

      En l'occurrence, ce n'est pas le cas.
      On à une commande, certes dangereuse, mais qui ne peux se propager excepté par stupidité de l'utilisateur (point qu'il est, cependant, utile de rappeler ici), et est d'ailleurs un usage valide, bien que peu prudent, d'une commande UNIX.
      UNIX serait-il un virus pour toi?
      Qualifies-tu rm -rf * de virus?

      Mon opinion à ce sujet est peu glorieuse, et j'avais espéré que quelqu'un l'exprime de façon plus raffinée que je n'ai pu le faire. Malheureusement, je tombe sous le coup de certains dessins d'XKCD par moments, notamment quand personne ne réagit avant quelques heures à des propos d'incultes sur un forum technique.
      Je n'ai pas arrêté de fréquenter développez.com pour rien. Ici, le moindre de mes propos peut être critiqué, en bien ou en mal, par tout le monde, et j'ai beaucoup appris ainsi, y compris de propos acerbes. Je suis acerbe ici, et ne me corriges pas volontairement parce que sinon, je serai condescendant, ce qui est encore pire pour moi. Mais ne le prend pas mal. Si je me trompe, il te suffit de me contredire en argumentant. Ainsi ce sera moi qui apprendrai. Malgré l'acide peut-être injustifié de mes mots.

      • [^] # Re: Magnifique virus !!!

        Posté par  . Évalué à 2.

        Mais ne le prend pas mal. Si je me trompe, il te suffit de me contredire en argumentant.

        https://www.blague-drole.net/blague-2071.html

        Ca suffit ? ;)

        • [^] # Re: Magnifique virus !!!

          Posté par  . Évalué à 1. Dernière modification le 09 juin 2015 à 10:37.

          Pour moi, oui, mais vu ton score, non :) on est pas tous égaux devant l'humour ma foi :)

          [edit]
          Hé merde, j'ai mis inutile quand je pensais pertinent.. mea culpa mais sache que je suis de tout cœur avec toi :) j'adore les blagues, pourries ou pas (encore faut-il que je les comprenne, ce qui est pas simple à l'écrit)

          • [^] # Re: Magnifique virus !!!

            Posté par  . Évalué à 1.

            Dans tout ça ce n'est pas la blague pourrie qui est le plus drôle mais ta réaction :)

  • # caractères à la con

    Posté par  . Évalué à 2. Dernière modification le 08 juin 2015 à 22:01.

    Ce genre de trucs m'arrive tout le temps avec bash. Souvent, retaper la commande à l'«identique» résout le problème. C'est à cause du fait qu'il m'arrive régulièrement d'omettre de lever mon doigt de la touche alt.gr. à un moment ou un autre, et du coup ce n'est plus un espace normal, donc find accepte pas.
    C'est très pénible.

    Commences par vérifier ça, on sait jamais. En tout cas, remplacer rm par cat ne m'affiche pas d'erreurs. Et je suis pas motivé pour mettre rm :p

    Enfin, ceci étant dit, tu devrais vraiment songer à mettre + au lieu de \; : niveau perfs, ça risque d'être autre chose si ton dossier est un peu chargé.

    2ème conseil: force un sous dossier de la racine, ou t'auras des surprises un jour: comme je l'ai dis, et d'autres, c'est déjà arrivé à des gens chevronné de se rater.

    • [^] # Re: caractères à la con

      Posté par  (site web personnel) . Évalué à 10.

      2ème conseil: force un sous dossier de la racine,

      Je préfère utiliser le modificateur :? qui déclenche une erreur si la variable qu'il modifie n'est pas définie:

      find "/${backup_dir:?}" -type f -prune -mtime +7 -exec rm -f '{}' \;

      • [^] # Re: caractères à la con

        Posté par  . Évalué à 2.

        Alors, si ça, ça ne vaut pas un pertinentage, je veux bien… heu… disons… p'tet pas me pendre, mais… je sais pas en fait.

        C'est du bash, ou juste du sh? Parce que j'admets: si c'est du simple bash, ça ne m'intéresse pas tant que ça :) en revanche, pour du shell standard… je tomberai surement amoureux d'une fille (ouai, j'suis sexiste, j'aime que les demoiselles, pas les damoiseaux) qui me sort un truc de ce genre!
        D'ailleurs, bash ou sh, va falloir que je me documente sur ce que c'est exactement, même si ça risque de virer à l'inutile (point de vue personnel, pas pro) vu que je compte passer à netBSD à la maison asap.

        • [^] # Re: caractères à la con

          Posté par  (site web personnel) . Évalué à 2. Dernière modification le 09 juin 2015 à 08:55.

          C'est du sh tout ce qu'il y a de plus normal. J'utilise sh tout le temps parceque je pousse les shells dans leurs retranchements, ça segfault, et donc rester dans le sh permet de passer facilement d'un shell à l'autre en cas de besoin.

          Je trouve le UNIX Grymoire très utile, à la fois simple et clair – mais il ne parle pas du tout d'ingénierie et d'organisation des programmes.

          • [^] # Re: caractères à la con

            Posté par  . Évalué à 2.

            Je connais grymoire, oui. Mon dieu, si je croyais en toi, je penserai que c'est toi qui l'a pondu!

            Franchement, c'est une référence, sur laquelle je suis tombé pour la première fois cette année. Hé oui, je suis un débutant sous unix, et ça va durer (que je me considère comme tel), parce que je compte passer aux BSD. Donc apprendre encore plus. Et celui qui apprend, apprend le plus souvent qu'il ne sait rien :) c'est pas pour rien que j'ai choisi le dev après tout. Ce sentiment de s'améliorer, d'être meilleur tout en sachant être toujours moyen dans le meilleur des cas, j'adore! Maso… peut-être un peu.

            En tout cas, merci à toi pour partager ta connaissance du bs (bullshit? Non, bon sang, BourneShell!). Il est regrettable que trop de personnes sur le net se basent sur le bash ou ksh ou csh. Se baser sur les standards me semble être souvent une bonne chose, malgré les difficultés que ça implique parfois. Mais avec de bons documents, y'a jamais de soucis. Mais ils sont encore plus rares que les bons profs.

            • [^] # Re: caractères à la con

              Posté par  (site web personnel) . Évalué à 3.

              Pour apprendre le shell le plus facile est de lire des programmes écrits par d'autres. De toute évidence la plupart des scripts sont hyper mal écrits mais quand on regarde aux bons endroits – du genre les scripts d'init de FreeBSD et ce genre de choses – on améliore ses chances de trouver de la littérature potable.

              Pour le côté “stratégique” de la programmation en shell j'aime beaucoup UNIX Shell Programming de Lowell Jay Arthur, 4 ème édition, 2€ maxi d'occasion.

              J'écris ce projet essentiellement en shell https://github.com/michipili/anvil

              • [^] # Re: caractères à la con

                Posté par  . Évalué à 2.

                donc, tu es l'auteur d'anvil… désolé, je retiens pour le moment plus le nom des projets que des devs :) ne le prend pas mal surtout!!!

                Toujours est-il que j'ai entendu parler (enfin, lu, bref) en bien de ce projet, bravo. Ce mot semble tellement insignifiant quand on l'écrit, par rapport a ce que l'on pense… bref.

                Pour en revenir au shell, j'ai commencé la journée d'hier (zut, il fait jour, donc, oui, hier…) à bouquiner la doc de netBSD en l'installant sur une VM. je suis sur la route de comprendre le sentiment engendré par sysvinit. Mais pas celui engendré par systemd.

                Je ne sais pas si c'est malheureux ou pas, mais je suis un développeur C++, habitué à mélanger gestion de la mémoire, RTTI, RAAI et j'en passe, du coup j'ai du mal avec le shell brut. qui n'a aucune de ces notions. C'est difficile de passer de l'enfance ou maman compilo nous évite les faux pas au monde des vieux ou l'on bégaie tout le temps :) (juste une image, je ne considère pas le shell comme un langage de vieux, juste comme étant l'outil dont je me sers pour lancer vingt fois une appli binaire sur un ensemble de fichier…. fin bon, je pourrais pas l'expliquer à l'écrit: disons que je préfère la ligne de commande à la majeure partie des IHM, et que je sais pas pourquoi)

                • [^] # Re: caractères à la con

                  Posté par  (site web personnel) . Évalué à 2.

                  donc, tu es l'auteur d'anvil…

                  Il y a environ 216 projets libres qui s'appellent anvil je ne suis probablement pas l'auteur de clui auquel tu penses! :)

                  Je ne sais pas si c'est malheureux ou pas, mais je suis un développeur C++

                  Le shell est un paradigme de programmation à part entière, l'erreur de base à ne pas commettre est de vouloir ranger les données dans la mémoire du shell alors que les données vivent en dehors du shell. Le shell est une sorte de méta-langage qui décrit un workflow.

                  Voilà un article de mon blog qui parle de cela (en anglais): http://unix-workstation.blogspot.de/2015/04/delegating-complex-treatments-to.html

                  • [^] # Re: caractères à la con

                    Posté par  . Évalué à 2.

                    Il y a environ 216 projets libres qui s'appellent anvil je ne suis probablement pas l'auteur de clui auquel tu penses! :)

                    hum, et combien ont eu leur pub sur dlfp? :p

                    Le shell est un paradigme [..] à part entière,

                    J'ai, je l'avoue, bien du mal avec ça. Je suis tellement rôdé au fait d'utiliser un langage ayant un typage le plus strict possible ( en fonction de l'historique du projet, mais à tendance assez dure tout de même ) que j'en chie maintenant à utiliser un langage plus… disons, large (mais où? héhé).
                    Vais lire ton article, qui ne pourra que m'améliorer vu que la raison principale qui fait que je me considère comme un débutant en code, c'est mon manque de paradigmes maîtrisés. Hors, selon moi, seul celui qui connaît ou mieux maîtrise un maximum de paradigmes peut choisir le bon. J'en suis donc de facto incapable, C++ est trop limité.

            • [^] # Re: caractères à la con

              Posté par  . Évalué à 2.

              Bon… la flemme de chercher à faire un diff avec mon message précédent la. J'admets. Alors, voila, j'aurai voulu remplacer par ceci:

              Je connais grymoire, oui. Mon dieu, si je croyais en toi, je penserai que c'est toi qui l'a pondu!

              Franchement, c'est une référence, sur laquelle je suis tombé pour la première fois cette année. Hé oui, je suis un débutant sous unix, et ça va durer (que je me considère comme tel), parce que je compte passer aux BSD. Donc apprendre encore plus. Et celui qui apprend, apprend le plus souvent qu'il ne sait rien :) c'est pas pour rien que j'ai choisi le dev après tout. Ce sentiment de s'améliorer, d'être meilleur tout en sachant être toujours moyen dans le meilleur des cas, j'adore! Maso… peut-être un peu.

              En tout cas, merci à toi pour partager ta connaissance du bs (bullshit? Non, bon sang, BourneShell!). Il est regrettable que trop de personnes sur le net se basent sur le bash ou ksh ou csh. Se baser sur les standards me semble être souvent une bonne chose, malgré les difficultés que ça implique parfois. Mais avec de bons documents, y'a jamais de soucis. Mais ils sont encore plus rares que les bons profs.

              Pour ce qui est de grymoire, je dirai que c'est un ouvrage a destination des gens qui connaissent l'ordinateur. Pas des informaticiens en général.
              J'aime beaucoup, pour expliquer à mes proches, expliquer que mon métier de dev (auto-proclamé, l'état refuse de me filer le papier…) consiste à traiter des informations, peu importe la science d'ou elles proviennent. Je préfère notre mot français au terme anglo-saxon de computer-scientist. Un bon dev, malgré le peu que j'ai croisé IRL me semble plus le type ouvert d'esprit, donc capable de traiter n'importe quelle informatiion, que le type capable de donner des ordres à une machine. J'ai envie de dire, le code, c'est comme le français au fond: de la philo.
              Cela n'empêche pas grymoire d'être excellent. Les machines étant pour le moment plus connes que les humains, il faut leur parler de façon simple, et la simplicité est difficile (philo, encore?). Grymoire nous apprend à la maîtriser. Enfin, les bases, la syntaxe, le langage, juste lire le … grimoire…. C'est tout. et c'est déjà très bien.

              • [^] # Re: caractères à la con

                Posté par  (site web personnel) . Évalué à 2.

                Si tu ne connais pas encore le texte de Thomas Scoville “UNIX as literature” ta prose me laisse penser que tu l'apprécieras beaucoup!

                http://theody.net/elements.html

                • [^] # Re: caractères à la con

                  Posté par  . Évalué à 2. Dernière modification le 09 juin 2015 à 10:03.

                  A chaud, je connais pas. Mais le temps et l'expérience m'ont donné une préférence pour les softs qui font qu'une chose, parce que je suis pas assez intelligent pour en faire plus. Du coup, en faire faire plus que je ne saurais moi-même faire à une machine plus conne que moi… non, clairement. Je suppose que ça rejoint ton auteur, que je vais aller lire de suite, ça pourra en fonction me faire rire, ou réfléchir. L'un comme l'autre étant bon à prendre, j'y vais :)

                  Juste, auparavant, qu'a ma prose de particulier (enfin, vu que quelqu'un semble avoir le même type, pas tant que ça) ou de commun avec cet auteur? Si mon opinion est proche, quel intérêt? Je vais lire de ce pas de toute façon, mais, pour les suivants…. on est côté forum ici, pas côté nourjal :)

                  • [^] # Re: caractères à la con

                    Posté par  (site web personnel) . Évalué à 2.

                    le temps et l'expérience m'ont donné une préférence pour les softs qui font qu'une chose, parce que je suis pas assez intelligent pour en faire plus

                    C'est en soi une assez bonne raison, il y a d'autres raisons mentionnées ici:

                    http://marmaro.de/docs/studium/unix-phil/unix-phil.pdf

                    En gros, le point important est que l'orthogonalité des composants favorise leur réutilisabilité.

                    • [^] # Re: caractères à la con

                      Posté par  . Évalué à 2. Dernière modification le 09 juin 2015 à 10:57.

                      Je suis en train de lire, et… ouah! je sais pas qui est cette personne, mais… disons, que je me reconnais dans une partie du background.

                      À l'origine, ma famille m'a toujours reproché d'être chiant sur le sens des mots (on se demande pourquoi j'adore dlfp du coup, hein? avec tout les grammar nazi du coin…. bien pire que moi, me sens chez moi héhéhéhé)? Bref, lui semble considérer avec le recul que les meilleurs unixiens ne sont pas nécessairement ceux ayant un BG purement informatique. Enfin, il faut que je finisse le document, il est vraiment extrêmement intéressant, particulièrement pour les gens qui ont eu à un moment, comme moi, la prétention de pouvoir tout apprendre tout seuls, et que l'info n'est rien d'autre qu'un science inventée par l'homme du XXème siècle.

                      J'ai, du coup, envie de faire une traduction agrémentée de mes ressentis propres, compte tenu du fait que je ne suis pas du tout un universitaire. Même à titre d'exercice perso ça pourrait être intéressant…hum.. why not. Je doute que ça aurait ça place ici mais c'est toujours sympa de comparer son ressenti à celui des autres. En public ou pas.

                      Pour ce qui est de l'orthogonalité et de la réutilisabilité, j'ai une facheuse tendance à considérer que les process, ou les threads, sont en fait des objets, et que la POO (mais pas la prog objet pure) est l'extension de la philo UNIX.

      • [^] # Re: caractères à la con

        Posté par  . Évalué à 2.

        Du coup, 3ème réponde à un même message….

        Je connaissais le grymoire, mais j'avoue… le CTRL-F que j'y ai fait n'est pas pour ceux qui ont 1) un coup dans le nez (comme moi à cette heure) ou ceux qui sont du genre à taper la nuit blanche (encore, comme moi pour le moment, mais, vraiment, il est arrivé à de nombreuses reprises de lire des erreurs de compilation C++ et les comprendre sous les mêmes conditions! entraînement, je pense.)

  • # Merci beaucoup pour vos réponses

    Posté par  . Évalué à 1.

    Bonjour,

    Tout d'abord merci pour vos réponses.

    Si je fais : find /$backup_dir -type f -prune -mtime +7
    J'ai Paramètre manquant pour « -mtime »

    Si je fais

    find "/${backup_dir}" -type f -prune -mtime +7 -exec rm -f '{}' \;

    J'ai Paramètre manquant pour « -exec »

    Quelqu'un a une autre idée.

    Merci par avance,

    • [^] # Re: Merci beaucoup pour vos réponses

      Posté par  (site web personnel) . Évalué à 5.

      Le retour chariot ^M ou \r dû à un passage par Windows ?

      $ find ~ -type f -prune -mtime +7$(printf "\r")
      find: Paramètre manquant pour « -mtime »
      $ find ~ -type f -prune -mtime +7 -exec ls$(printf "\r")
      find: Paramètre manquant pour « -exec »

      Bref un dos2unix ou un sed 's///' devrait faire l'affaire.

Suivre le flux des commentaires

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