IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Récupérer le résultat de "find"


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut Récupérer le résultat de "find"
    Bonjour,

    J'ai besoin de faire un petit script shell qui me permet de supprimer des fichiers en fonction de la date de création.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/Upload/up/ -type f -cmin +1 -exec rm -f {} \;

    J'aimerais maintenant pouvoir enregistrer le résultat dans un fichier texte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/Upload/up/ -type f -cmin +1 -exec rm -f {} \ >> /var/www/html/log/log_DeleteFiles.txt;

    Mais j'obtiens chaque fois une erreur :
    find: Paramètre manquant pour « -exec »
    Il me semble que le problème est du au fait qu'il n'y ai pas de coupure entre la commande "exec" et le ">>"
    J'ai essayé avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/Upload/up/ -type f -cmin +1 -exec rm -f {} \ | xargs >> /var/www/html/log/log_DeleteFiles.txt;

    Mais j'ai toujours la même erreur...
    Une idée?
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ludojojo Voir le message
    Bonjour,

    J'ai besoin de faire un petit script shell qui me permet de supprimer des fichiers en fonction de la date de création.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/Upload/up/ -type f -cmin +1 -exec rm -f {} \;

    J'aimerais maintenant pouvoir enregistrer le résultat dans un fichier texte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/Upload/up/ -type f -cmin +1 -exec rm -f {} \ >> /var/www/html/log/log_DeleteFiles.txt;

    Mais j'obtiens chaque fois une erreur :
    Une idée?
    Il te faut comprendre comment fonctionne -exec.
    -exec permet de faire passer à find une commande. Cette commande peut être très courte, comme par exemple "ls", ou plus longue comme mv.
    Il faut donc indiquer à find où elle s'arrête. D'où le point-virgule permettant de la terminer. Mais il ne faut pas que le shell récupère ce point-virgule pour lui d'où le backslash.
    Si tu rajoutes qqchose derrière, faut pas déplacer le point-virgule car il appartient au -exec !!!

    Accessoirement, le vrai find unix n'affiche rien. Il faut lui rajouter l'option "-print" pour qu'il affiche ce qu'il trouve. Donc autant rester portable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/www/html/Upload/up/ -type f -cmin +1 -exec rm -f {} \; -print >> /var/www/html/log/log_DeleteFiles.txt
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    Je comprend mieux le principe de fonctionnement de la fonction -exec...

    find /var/www/html/Upload/up/ -type f -cmin +1 -exec rm -f {} \; -print >> /var/www/html/log/log_DeleteFiles.txt
    Cela fonctionne parfaitement !

    Petite question, j'ai vu dans le man du la fonction "find", que l'on pouvait utiliser -printf pour mettre en forme les données...
    Je me suis donc tout de suite posé la question :
    Est il possible d'obtenir un résultat plus propre avec cette fonction?
    L'idéal serai d'avoir quelque chose comme cela :
    Date
    ---------
    liste des fichiers...
    ---------

    Pour information, la commande précédente est utilisée dans un script .sh qui est appelé par cron. Donc si il faut faire un script plus complet, cela ne me pose pas de problème.

    Merci par avance

    PS : La question de base étant résolue, je place ce post en résolu !
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ludojojo Voir le message
    Est il possible d'obtenir un résultat plus propre avec cette fonction?
    L'idéal serai d'avoir quelque chose comme cela :
    La philosophie Unix est que chaque outil ne fait qu'une chose mais il la fait bien. find sert à trouver. Accessoirement il peut afficher l'élément trouvé dans un format plus agréable mais n'est pas fait pour faire de la mise en page.
    Pour ça, il y a "pr" qui permet d'encapsuler des infos dans une mise en page destinée à être imprimée (d'où le nom) => find ...... -exec ... \; |tr ...
    On peut aussi utiliser awk mais il est moins fait pour ça=> find ...... -exec ... \; |awk ...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le contenu d'une variable quotée
    Par wayat91 dans le forum VBScript
    Réponses: 3
    Dernier message: 04/03/2011, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo