Script bash : liste et test

Résolu
Bonjour,

Je m'essaye actuellement à quelques scripts bash.
Je souhaiterais en faire un qui réalise un commande toute simple, mais je bloque...
Le principe :
Je lance le script avec en paramètre un chemin absolu (existant).
Je liste récursivement ce répertoire, et pour chaque "occurrence", si c'est un fichier je fais un chown toto:users, si c'est un répertoire, je fais un chown titi:users.
J'avais donc pensé à quelque chose dans le genre :

#!/bin/bash
for i in $(ls -R $1)
do
if [ -f $i ]
Then
chown toto:users $i
else
chown titi:users $i
fi
done

Mais comme vous vous en doutez, ca marche pô... :)
Je ne sais pas comment lister les répertoires, et récupérer le chemin absolu du fichier/sous-répertoire...
Merci de vos conseils avisés :)

--

" Le plus intelligent est celui qui sait qu'il ne sait pas... "
Teteve, informaticien amateur et passionné
Configuration: Debian Lenny
Firefox 2.0.0.13

6 réponses

  1. Modérateur
    Salut,

    find /repertoire -type f -exec chown toto:users {} \;
    find /repertoire -type d -exec chown titi:users {} \;
    --
    lami20j
    1. Salut lami20j,

      Toujours aussi rapides et efficaces les services de lami20j... :)
      Merci bien, je teste ca de suite...
      Je reviens si j'ai à redire sur la qualité... :p

      Teteve

      [edit]
      Je reviens... pour confirmer que c'est nickel !! :)
      Merci beaucoup...
      1. Me revoilà...

        Ptite question... Pour exécuter plusieurs commandes après mon find, je dois faire deux find, ou je peux le faire sur la même ligne ?

        find $1 -type f -exec chown toto:users {} \ -exec chmod 660 {} \;

        ou

        find $1 -type f -exec chown toto:users {} \;
        find $1 -type f -exec chmod 660 {} \;

        Si c'est possible sur la même ligne, quelle est la syntaxe ? Je n'ai pas tout compris au man en anglais de find...

        Merci :)
        1. Modérateur
          Salut,
          find $1 -type f -exec chown toto:users {} \; -exec chmod 660 {} \;
          ;-))
          1. nannnnnnnnn

            pfffffffffffff

            j'avais quasiment testé toutes les possibilités... sauf celle là !!! :s

            Merci encore :)