Rechercher : dans
Par :

Script bash : liste et test

Dernière réponse le 28 mar 2008 à 14:47:33 teteve, le 28 mar 2008 à 13:36:50 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Script bash : liste et test » dans :
Bash - Les paramètres VoirIntroduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...

1

lami20j, le 28 mar 2008 à 13:51:07
  • +2

Salut,

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

Répondre à lami20j

2

teteve, le 28 mar 2008 à 14:09:52

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...

" Le plus intelligent est celui qui sait qu'il ne sait pas... "
Teteve, informaticien amateur et passionné

Répondre à teteve

3

lami20j, le 28 mar 2008 à 14:23:19

De rien ;-)) lami20j

Répondre à lami20j

4

teteve, le 28 mar 2008 à 14:25:58

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 :)

" Le plus intelligent est celui qui sait qu'il ne sait pas... "
Teteve, informaticien amateur et passionné

Répondre à teteve

5

jipicy, le 28 mar 2008 à 14:44:27

Salut,

find $1 -type f -exec chown toto:users {} \; -exec chmod 660 {} \;
;-))
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

6

 teteve, le 28 mar 2008 à 14:47:33

Nannnnnnnnn

pfffffffffffff

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

Merci encore :)

" Le plus intelligent est celui qui sait qu'il ne sait pas... "
Teteve, informaticien amateur et passionné

Répondre à teteve