Script bash : liste et test [Résolu/Fermé]

Signaler
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
-
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
-
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

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 537
Salut,

find /repertoire -type f -exec chown toto:users {} \;
find /repertoire -type d -exec chown titi:users {} \;
--
lami20j
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
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...
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 537
De rien ;-))
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
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 :)
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 858
Salut,
find $1 -type f -exec chown toto:users {} \; -exec chmod 660 {} \;
;-))
Messages postés
123
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 février 2011
40
nannnnnnnnn

pfffffffffffff

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

Merci encore :)