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 :

verifier la suppression dans le exec du find


Sujet :

Linux

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 331
    Points : 146
    Points
    146
    Par défaut verifier la suppression dans le exec du find
    bonjour,
    je voudrais verifier si la commande exec c'est bien passé.
    j'ai ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pour tout les reperoires $REP
     "blablah"
     find "$REP" -name "toto" -exec rm -ef {} \; 2>> Log_File
    FINpour
    dans le test je voudrais savoir si le fichier toto est bien supprimé.
    et affiché le chemin du repertoire s'il ne s'est pas supprime.
    Merci
    Va vers ton risque, à te regarder ils s'habitueront.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par decksroy Voir le message
    bonjour,
    je voudrais verifier si la commande exec c'est bien passé.
    j'ai ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pour tout les reperoires $REP
     "blablah"
     find "$REP" -name "toto" -exec rm -ef {} \; 2>> Log_File
    FINpour
    dans le test je voudrais savoir si le fichier toto est bien supprimé.
    et affiché le chemin du repertoire s'il ne s'est pas supprime.
    Merci
    En rajoutant "-print" tu auras aussi le chemin ce qui répond déjà à ta 2° demande

    En revanche je comprends pas que tu désires vérifier la suppression puisque tu demandes un "rm -f" donc si t'as les droits d'écriture sur le répertoire dans lequel se trouve toto ben il sera effacé de facto (même si toto est en mode 000)

    Bon, sinon je pense à cette soluce (non testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find "$REP" -name "toto" -exec rm -ef {} || echo {} \; 2>> Log_File
    Autre chose => t'es pas obligé de faire une boucle. Tu peux très bien faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find tous_les_repertoires -name "toto" -...
    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
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 331
    Points : 146
    Points
    146
    Par défaut
    Merci pour ta reponse
    1)
    Autre chose => t'es pas obligé de faire une boucle. Tu peux très bien faire un
    Je fais la boucle car le chemin est ecris dans un fichier dont je lis chaque ligne.
    en faite le for c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while read ligne
     
    done<$Fichier
    2) Pour le "-print" je l'ai aussi dans la commande

    3) Pour la verification de la suppression, il faut que je sorte de la boucle si un fichier ne s'est pas supprimé.
    En faite il faut que je teste si la commande c'est bien passé et si oui, je renvoie un code erreur et je sors de la boucle.

    Encore une chose comment faire un test pour voir si le repertoire est en ecriture?
    Va vers ton risque, à te regarder ils s'habitueront.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par decksroy Voir le message
    3) Pour la verification de la suppression, il faut que je sorte de la boucle si un fichier ne s'est pas supprimé.
    En faite il faut que je teste si la commande c'est bien passé et si oui, je renvoie un code erreur et je sors de la boucle.
    L'idée est bonne en pour une commande simple. Malheureusement ta commande "rm" est traitée via le find et donc ne communique pas directement avec ton shell.
    Donc faut gruger le système
    1) tu peux très bien faire un "-exec rm {} || touch /tmp/flag" puis aller tester si "/tmp/flag" existe => si oui => fichier non effacé
    2) tu peux faire deux find
    - le premier find pour effacer
    - le 2° find, pour contrôler. S'il te renvoie des "toto" cela signifie qu'ils n'ont pas été effacés donc break

    Citation Envoyé par decksroy Voir le message
    Encore une chose comment faire un test pour voir si le repertoire est en ecriture?
    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]

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 331
    Points : 146
    Points
    146
    Par défaut
    oui je n'avais pas pensé pour le deuxieme find.
    sinon j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if [ grep -wn "Cannot remove" $LOG_FILE ] ;
    then Fin $EXIT_FILE_CANNOT_DELETE
    fi
    Avant ça, dans la commande find je redirige dans un fichier de log($LOG_FILE)
    et si je vois le Cannot remove je sors (grep...).

    Et je me demande dans ta solution du deuxieme find
    si je peux mettre apres le exec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ... -exec Fin $EXIT_FILE_CANNOT_DELETE \; >> $LOG_FILE
    es ce qu'il m'affiche le resultat de la fonction dans le LOG_FILE
    Va vers ton risque, à te regarder ils s'habitueront.

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

Discussions similaires

  1. [Runtime,exec] Comment faire un pipe unix dans le exec ?
    Par Escuzze dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/03/2008, 12h48
  2. [Debutant]Suppression dans des tables avec contraintes
    Par Roming22 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/10/2004, 17h23
  3. Combler les trous lors d'une suppression dans une table
    Par Billybongjoe dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 08/04/2004, 14h02
  4. [LG]suppression dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 9
    Dernier message: 16/12/2003, 21h20
  5. [LG]suppression dans un fichier
    Par cedrick essale dans le forum Langage
    Réponses: 5
    Dernier message: 10/08/2003, 15h22

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