Script bash : liste et test

Résolu
teteve Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   -  
teteve Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   -
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 :)
A voir également:

6 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

find /repertoire -type f -exec chown toto:users {} \;
find /repertoire -type d -exec chown titi:users {} \;
--
lami20j
3
teteve Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   40
 
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
De rien ;-))
1
teteve Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   40
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,
find $1 -type f -exec chown toto:users {} \; -exec chmod 660 {} \;
;-))
1
teteve Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   40
 
nannnnnnnnn

pfffffffffffff

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

Merci encore :)
1