Script bash : liste et test

Résolu/Fermé
teteve Messages postés 123 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 23 février 2011 - 28 mars 2008 à 13:36
teteve Messages postés 123 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 23 février 2011 - 28 mars 2008 à 14:47
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 :)

6 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
28 mars 2008 à 13:51
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 jeudi 22 avril 2004 Statut Membre Dernière intervention 23 février 2011 40
28 mars 2008 à 14:09
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
28 mars 2008 à 14:23
De rien ;-))
1
teteve Messages postés 123 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 23 février 2011 40
28 mars 2008 à 14:25
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
28 mars 2008 à 14:44
Salut,
find $1 -type f -exec chown toto:users {} \; -exec chmod 660 {} \;
;-))
1
teteve Messages postés 123 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 23 février 2011 40
28 mars 2008 à 14:47
nannnnnnnnn

pfffffffffffff

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

Merci encore :)
1