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

BSD Discussion :

Execution de commandes dans un find


Sujet :

BSD

  1. #1
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut Execution de commandes dans un find
    Salut à tous,

    J'ai un serveur de données sous FreeBSD. Pour une meilleure gestion des droits utilisateurs, j'utilise les ACLs.
    J'ai écrit un script perl qui permet d'attribuer les droits des différents dossiers automatiquement en lisant une matrice .csv. Pour appliquer les droits en récursif, je passe une commande du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # find chemin_dossier_parent -exec setafcl -m u:..:rwx {} \;
    Le problème est que setfacl modifie la date de modification des dossiers/fichiers en leur attribuant la date du jour.

    Je pensais donc executer un find qui ferait :
    1. récupération et stockage (dans un fichier par exple) de la date de modification de chaque dossier/fichier
    2. exécution du setfacl
    3. réattribution de la date de modif stockée précédemment pour chaque dossier/fichier par la lecture du fichier.
    => Le tout dans le find !!!

    Avez-vous une idée pour faire cela ? ou une autre facon de faire sinon ?

    Merci !
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Quel est le probleme avec la commande que tu as poste ? Elle ne te permet pas de faire ce que tu veux ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    La commande que j'ai postée fonctionne bien. Je demandais juste comment faire pour executer plusieurs commandes dans un seul find.
    Je m'explique : dans la commande que j'ai postée, une seule commande, ici setfacl, est executée à l'intérieur du find. J'aimerais savoir s'il est possible et comment executer 2 ou plusieurs commandes au lieu d'une seule.

    Bref, si vous avez la solution, tant mieux, sinon ce n'est pas grave puisque j'ai réussi à écrire un script qui fait très bien ce que je voulais faire.
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Mea culpa : j'avais mal lu la question !

    Donc apres reflexion, je ne pense pas que ce soit possible en une seule commande.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Aucun soucis.
    On clot le sujet ?
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 2
    Points : 7
    Points
    7
    Par défaut Une solution
    On peut mettre plusieurs exec dans le find

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ./ -iname "*1*" -exec mv {} {}x \; -exec mv {}x ../b \;

  7. #7
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par lavazavio Voir le message
    Avez-vous une idée pour faire cela ? ou une autre facon de faire sinon ?
    J'utiliserai trois finds successifs. Quelque chose comme ça (pas testé):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    find chemin_dossier_parent -exec mkdir -p /tmp/reference/{} \; -exec touch -r {} /tmp/reference/{} \;
    find chemin_dossier_parent -exec setfacl -m u:..:rwx {} \;
    find chemin_dossier_parent -exec touch -r /tmp/reference/{} {} \;
    rm -rf /tmp/reference
    ɹǝsn *sıɹɐlos*

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/09/2012, 16h32
  2. execution de commande dans VBS
    Par micka180 dans le forum VBScript
    Réponses: 15
    Dernier message: 14/12/2009, 10h55
  3. [2K5] Execution de commande dans un curseur
    Par duc@ti dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/06/2008, 14h46
  4. Executer commande dans un processus fils !
    Par jérôme.D dans le forum POSIX
    Réponses: 6
    Dernier message: 23/11/2006, 22h14
  5. [MySQL] executer une commande php contenu dans une variable
    Par Stopher dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/11/2006, 15h44

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