Script shell arborescence

vin0 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
 Vin0 -
Bonjour,

Je suis totalement débutant dans l'utilisation de shell et je cherche à réaliser un script en shell sh.

Sans utiliser la commande "find" ce script doit prendre en paramètre une commande et l’exécuter
dans toutes les parties de l’arborescence, quelle que soit leur profondeur.

Si quelqu'un a une idée.

Merci,

Vin0
A voir également:

5 réponses

Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   261
 
Salut,
ça devrait pouvoir ressembler à ça :
#!/bin/bash
if -n "$1"; then
 echo "Usage : " $0 " command";
 echo "Exécute command dans tous les sous-répertoires du dossier courant.";
else
  for i in ./*
  do
    if [ -d "$i" ]
    then
      $1 $i;
    fi
  done
fi
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
on peut utiliser du pour obtenir l'arborescence
#!/bin/bash

test -z "$1" && { echo usage: $0 commande ; exit 1 ; }
HERE=$PWD
du | ( while read T D ; do
        cd "$D"
        $1
        cd $HERE
done) 
0
Vin0
 
Merci beaucoup pour ces deux réponses!

Ces scripts sont en bash, seraient-ils différents en sh?
Pourriez vous également les commenter svp?

Merci,

Vin0
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
les scripts proposés ici n'ont rien de spécifique bash et fonctionnent avec #!/bin/sh
0
Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   261
 
Ça ressemble fort à une question de cours, non ?
Je te laisse te documenter par toi même.... ;-)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Sans utiliser la commande "find" ce script doit prendre en paramètre une commande et l’exécuter dans toutes les parties de l’arborescence, quelle que soit leur profondeur.

L'énoncé du 1er message aurait du te mettre la puce à l'oreille, non ? ;-))
0
Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   261 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
C'a été le cas, mais ça me semble normal de demander de l'aide tant qu'il fait un petit effort de compréhension.
0
Vin0
 
Justement, toutes les documentations que je trouve concernent le bash et non le sh.
0

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

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
autre méthode, on parcourt l'arborescence avec une fonction récursive
$ cat ~/f1
#!/bin/sh
test -z "$1" && { echo usage: $0 commande ; exit 1 ; }
CMD="$@"
fx()
{
	for F in $(ls -a|egrep -v '^\.$|^\.\.$')
	do test -d $F -a ! -h $F -a -r $F && { cd $F ; fx $F ; cd .. ; } ; done
	$CMD
}
fx $PWD

$ cd /tmp
$ mkdir -p a/b/c/d
$ cd a
$ ~/f1 pwd
/tmp/a/b/c/d
/tmp/a/b/c
/tmp/a/b
/tmp/a
$ 
0
Vin0
 
Merci beaucoup pour votre aide!
0