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:
Merci pour vos remarques
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"
Partager