Bonjour,

Je reprends un peu le shell bash pour faire un "mini" script qui ajoute un préfixe à tous mes fichiers à partir d'un répertoire courant.
J'imagine qu'il y a certainement plus court que ce que j'ai fait, mais bon !!

Mon problème est que le préfixe utilisé ne correspond pas à ce que je veux, est-ce dû à la récursivité de la fonction parse_rep ?

ci-joint mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/usr/bin/bash
 
# usage mv_fic.sh REPERTOIRE EXTENSION [RECURSION]
 
# Ajoute à tous les fichiers du repertoire $DIR, l'extension "$EXTENSION_" devant.
# Par exemple sur l'instruction : mv_fic.sh `pwd` L2 kkk
# alors "toto.mp3" devient "L2_toto.mp3"
 
# definition de la fonction parse_rep
function parse_rep
{
	echo "Entree dans la fonction avec le param : $1"
	echo "Travaille dans : $2"
	echo "Ajout de l'extension : $3"
 
	# Rentrer dans le repertoire passe en argument
	cd $2
 
	# Recuperer le nom des fichiers
	LIST_FIC_TEMP=`/bin/ls`
 
	# Creer une liste de repertoires
	LIST_REP=""
 
	# Changer d'abord tous les noms des fichiers
	for FIC_TEMP in $LIST_FIC_TEMP
	do
		if [ -f $FIC_TEMP ]
		then
			# Si c'est un fichier : changer son nom
			echo "$FIC_TEMP ==> $3_$FIC_TEMP"
		elif [ -d $FIC_TEMP ]
		then
			# Si c'est un repertoire : faire une liste
			echo "REP TROUVE : $FIC_TEMP"
			LIST_REP="$LIST_REP $FIC_TEMP"
		fi
	done
 
	echo "Voici la liste des repertoires : $LIST_REP"
 
	# Ensuite rentrer dans les sous-repertoires
	for REP_TEMP in $LIST_REP
	do
		if [ -d $REP_TEMP ]
		then
			CURRENT_REP=`pwd`
			parse_rep $CURRENT_REP $REP_TEMP $3
		fi
	done
 
	# Enfin sortir du repertoire
	cd ..
}
 
PATH=`pwd`
echo "Execution a partir du repertoire :"
pwd
echo ""
echo ""
 
RECURSIF="NON"
 
# verification qu'il y a bien 2 ou 3 arguments
if [ $# -lt 2 ]
then
	echo "Il manque des arguments"
	echo "Erreur : Sortie de programme"
	exit 1
elif [ $# -gt 3 ]
then
	echo "Il y a trop d'arguments"
	echo "Erreur : Sortie de programme"
	exit 1
elif [ $# == 2 ]
then
	echo "Pas de recursivite"
else
	RECURSIF="OUI"
fi
 
DIR=$1
EXTENSION=$2
 
echo "DIR : $DIR"
if [ -d $DIR ] && [ -n $DIR ]
then
	cd $DIR
	echo "Changement de repertoire :"
	pwd
	echo ""
	echo ""	
else
	echo "\"$1\" : n'est pas un repertoire"
	exit 
fi
 
echo "Script recursif : $RECURSIF"
 
if [ $RECURSIF == "NON" ]
then
	# Recuperation de tous les fichiers dont il faut modifier le nom
	LIST_FIC=`/bin/ls`
 
	# Ajout de l'extension pour tous les fichiers
	for FIC in $LIST_FIC
	do
		echo "$FIC : renome en $EXTENSION_$FIC"
		#/bin/mv $FIC "$EXTENSION_$FIC"
	done
 
else
	# Recuperation de tous les fichiers
	LIST_FIC_TEMP=`/bin/ls`
 
	# Parser le repertoire courant
	parse_rep $LIST_FIC_TEMP "." "$EXTENSION"
 
fi
 
cd $PATH
echo "Retour au repertoire courant :"
pwd
echo ""
echo ""
 
echo "Script termine correctement"
Merci pour vos remarques