Bonjour,
Il y a l'erreur suivante
et un echo $nouveau_nom_fichier affiche /home/toto/source/aabbbccc*.txt comme valeur de cette variable alors qu'elle devrait avoir $nom_fichier amputé de $prefix
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ ./renCATExp.sh mv: cannot stat '/home/toto/source/aabbbccc*.txt': No such file or directory
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 #!/bin/bash #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # Renommer export avant transfert" #""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # renCATExpt.bash V0.1# GG # # Declaration variables script=/$HOME/scripts log=$HOME/logs archive=$HOME/archive source=$HOME/source prefix=aabbbccc ficlog=logrename.txt # Si absent, crée le fichier test ! -f "$log/$ficlog" && touch "$log/$ficlog" # puis, dans tous les cas, ajoute la date à laquelle le script est executé echo "$gdate" >> "$log/$ficlog" # Renommer fichier par suppression préfix 9 1er caractères # Boucle pour rechercher tout fichier debutant avec aaabbbccc suivi de _973 et une extension .txt situé dans le dossier $SOURCE for nom_fichier in "$source/$prefix"*.txt do # Attribuer à la variable nouveau_nom_fichier la valeur de nom_fichier sans le préfix aaabbbccc nouveau_nom_fichier=`echo $nom_fichier|sed 's/$prefix//g'`; # Renommer fichier mv "$nouveau_nom_fichier" "$archive" >> "$log/$ficlog" # Transferer fichier vers machine windows #scp "$archive"/*.txt toto@winserv:/~ done
Ouvre un peu les yeux!!!
Autre chose: une variable entre quotes simples n'est pas traduite (cf ton sed). De plus, la variable nouveau_nom contient (enfin contiendrait si le sed était correctement écrit) le nom modifié mais le fichier d'origine, lui, n'a pas encore ce nom => un check du mv ne serait pas inutile non plus.
Et quand je t'ai dit que tabuler deux fois (pour le "do" puis pour les instructions qui y sont associées) était idiot, c'est tout aussi nul de supprimer toutes les tabulations et coller ton code tout à gauche (j'ai l'impression de me retrouver dans une bd d'Iznogood). Pour une structure ça reste lisible mais quand tu en seras à 3 boucles imbriquées plus un "if"...![]()
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
à moi :
#echo "$gdate" >> "$log/$ficlog"
c'est quoi ce gdate ?
abc.txt pour faire tes premiers tests c'était trop simple et trop lisible ? Résultat tu nous décourages et il faut s'accrocher pour essayer de te comprendre.# Boucle pour rechercher tout fichier debutant avec aaabbbccc suivi de _973 et une extension .txt situé dans le dossier $SOURCE
En plus il n'y a rien dans source...
J'ai modifié ta boucle for en rajoutant trois témoins, qui permettent de voir que tu n'as rien dans tes dossiers, donc tu ne moveras rien :
Sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 for nom_fichier in "$source/$prefix"*.txt do echo "ici $nom_fichier" # Attribuer à la variable nouveau_nom_fichier la valeur de nom_fichier sans le préfix aaabbbccc nouveau_nom_fichier=`echo $nom_fichier | sed 's/$prefix//g'`; # Renommer fichier echo "là $nouveau_nom_fichier" echo "dernier $archive" mv "$nouveau_nom_fichier" "$archive" >> "$log/$ficlog" done
Et ton message d'erreur montre simplement que tu as un nom de fichier mais pas le fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ici /tmp/source/aabbbccc*.txt là /tmp/source/aabbbccc*.txt dernier /tmp/archive mv: impossible d'évaluer '/tmp/source/aabbbccc*.txt': Aucun fichier ou dossier de ce type
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Bonjour,
le gdate est une variable que j'ai fait pour ajouter la date dans le fichier de log
Ouf!!! ça m'a pris du temps mais le script fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part gdate=$(date +"%A %d %B %Y - %X")
En tout cas je vous remercie les gars de votre assistance. Les fichiers sont bien renommés et le fichier de log est bien alimenté.
Quant à moi je continu a pratiquer.
en bash :
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf -v gdate '%(%A %d %B %Y - %X)T'![]()
Partager