Chgrp selectif dans une arborescence

Résolu
Bonjour,

Je cherche à changer le groupe toto en titi pour tous les dossiers et fichiers d'une arborescence qui ont en commun le groupe tata.
Je pense que la commande find suivie d'un -exec doit me permettre ça mais ne sais pas la formuler. Pouvez-vous m'aider je vous prie ?

Merci beaucoup

Hexadec comme 0123456789ABCDEF

9 réponses

  1. Contributeur
    Salut,

    Je cherche à changer le groupe toto en titi pour tous les dossiers et fichiers d'une arborescence qui ont en commun le groupe tata.

    Euh... y'a un truc qui m'échappe là ;-(

    T'aurais un exemple plus parlant s'il te plaît ?
    0
    1. Merci,
      soit une arbo arbo1/arbo2/...

      je part de arbo1 et doit changer le groupe grp1 de toute l'arbo, en grp2.
      soit selectionner toute les fichiers dont le groupe est grp1 et leur changer le groupe en grp2
      0
      1. Contributeur
        On est toujours dans le flou ;-\

        Dans ton 1er message tu dis :
        changer le groupe toto en titi pour tous les dossiers et fichiers d'une arborescence
        .

        Et dans le second :
        selectionner toute les fichiers dont le groupe est grp1 et leur changer le groupe en grp2 
        .

        Ce qui n'est pas du tout pareil ;-(

        Essaie ça :

        find arbo1/ -group grp1 -exec echo "chgrp grp2 {}" \;


        Ça devrait t'afficher ce qui devrait être fait s'il n'y avait pas la commande
        echo
        devant...
        0
    2. Merci infiniment :-)
      je teste ça et te tiens au courant, mais ça ressemble a ce que je pensais sans pouvoir le mettre en forme. En tout cas, ta ligne de commande parait bien faire ce que je voudrais.
      Si le résultat est bon, j'enlève l'echo et ça devrait rouler comme je l'entend.

      Merci encore zipe31
      0
      1. Bonjour,

        il affiche chgrp grp2 {} en chaine comme s'il n'interprêtait pas le contenu.
        On ne voit pas ce qu'il y a dans les accolades. Normal ?
        0
        1. Contributeur
          Salut,

          Non, ce n'est pas normal ;-(

          Affiche ce que tu tapes avec 2 ou 3 lignes de sorties.

          Voilà un exemple chez moi :

          $ find /var -maxdepth 1 -type d ! -group root -exec echo "chgrp toto {}" \;
          chgrp toto /var/crash
          chgrp toto /var/mail
          chgrp toto /var/local
          0
      2. Voilà ce que j'obtiens

        root@tnfspr01:/export/dataB1/ELECpropal# find . -group propal -exec echo "chgrp ELEC {}" \;
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        chgrp ELEC {}
        ...
        0
        1. Contributeur
          Est-ce que la commande
          find . -group propal -print
          seule retourne quelque chose ?

          Y-at-il au moins un fichier et/ou dossier dans cette arborescence appartenant au groupe
          propal
          ?
          0
      3. Oui je l'ai tenté et j'ai eu droit a une ligne immense de fichiers.
        J'en ai selectionné une partie et vérifié qu'ils avaient bien le groupe propal, ce qui est le cas.
        Donc la commande find elle, est correcte.
        C'est la syntaxe du -exec qui ne doit pas être bonne.
        Je l'exécute sur un Solaris 10
        Dans le man find on y trouve un exemple -exec rm {} \;
        ce qui est la même chose. serait-ce les doubles quotes ?
        0
        1. Contributeur
          serait-ce les doubles quotes ?
          Peut-être ;-\

          Essaie avec des quotes simples ou tout simplement avec :
           find . -group propal -exec echo  {} \;
          0
      4. YAHOOO !

        Là ça fonctionne je relance la même technique avec echo chgrp ELEC {} pour voir le résultat avant de tout casser. Merci pour ta lumière, tu dois y voir la nuit les yeux fermés toi ;-)
        0
        1. YEP, je confirme ça fonctionne, tu es sensationnel !

          J'obtiens ce coup-ci des choses vraisemblables
          ...
          chgrp ELEC ./siglap.l/al3i.d/segment.l
          chgrp ELEC ./siglap.l/al3i.d/segment.l/lisez-moi.lm
          chgrp ELEC ./siglap.l/al3i.d/segment.l/circo.cr
          chgrp ELEC ./siglap.l/al3i.d/segment.l/cisco2.cd
          chgrp ELEC ./siglap.l/al3i.d/segment.l/corps.tx
          chgrp ELEC ./siglap.l/al3i.d/segment.l/corps.le
          chgrp ELEC ./siglap.l/al3i.d/segment.l/corps2.ka
          chgrp ELEC ./siglap.l/al3i.d/segment.l/corel.cr
          ...
          Je peux donc attaquer le grand changement de groupe
          MERCIIIIII Maestro ZIPE31 ;-)
          0
          1. Contributeur
            De rien, mais il n'y a rien d'extraordinaire... il faut juste penser avant de faire les choses à tester le(s) possible(s) résultat(s).
            0
        2. Tu as raison, et c'est grâce à toi que je sais comment désormais.
          Ca fait 3 ans que je fais des commandes basiques a longueur de journée et je n'avais pas encore eu l'occasion de faire des commandes comme celle-là. Particulièrement formatrice cette commande.

          Merci encore
          0