#1 Le 15/03/2011, à 14:47
- Miroslav
déplacer et renommer des fichiers mv + sed [RESOLU]
Bonjour,
je travails sur un script pour automatiser des tâches notamment copier des fichiers en le renommant selon des variables...
ex: la référence est de type 21 13 6110
j'ai nommé mes pdf de cette façon, ce n'est pas censé changé dans le temps : xxEMByy.pdf ; xxAFFyy.pdf
echo "Quelle est la référence du nouvel article?"
read NOUVEL_ARTICLE
TYPE1=$(echo $NOUVEL_ARTICLE | awk '{print $1}')
TYPE2=$(echo $NOUVEL_ARTICLE | awk '{print $2}')
for file in `ls ~/Bureau | grep pdf` ;
do mv $file `echo $file | sed "s/xx/"\$TYPE1"/g" | sed "s/yy/"\$TYPE2"/g"` ;
done
résultat souhaité
echo "Quelle est la référence du nouvel article?"
read 21 13 6110
TYPE1=21
TYPE2=13
for file in `ls ~/Bureau | grep pdf` ;
do mv xxEMByy.pdf 21EMB13.pdf ;
done
erreur
+ grep pdf
+ echo xxEMByy.pdf
+ sed s/xx/16/g
+ sed s/yy/40/g
+ mv xxEMByy.pdf 16EMB40.pdf
mv: ne peut évaluer `xxEMByy.pdf': Aucun fichier ou dossier de ce type
donc ça marche en partie puisque le fichier est bien renommé... mais pas copié
Merci
(PS: Poste déplacé de "Trucs Astuces...")
Dernière modification par Miroslav (Le 17/03/2011, à 10:38)
Hors ligne
#2 Le 15/03/2011, à 14:59
- FRUiT
Re : déplacer et renommer des fichiers mv + sed [RESOLU]
for file in `ls ~/Bureau | grep pdf` ;
:f34r: !!
for file in ~/Bureau/*.pdf ;
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#3 Le 15/03/2011, à 16:09
- Miroslav
Re : déplacer et renommer des fichiers mv + sed [RESOLU]
for file in `ls ~/Bureau | grep pdf` ;
:f34r: !!
for file in ~/Bureau/*.pdf ;
désolé
Par contre le résultat est le même, toujours la même erreur
Dernière modification par Miroslav (Le 15/03/2011, à 16:10)
Hors ligne
#4 Le 15/03/2011, à 17:15
- FRUiT
Re : déplacer et renommer des fichiers mv + sed [RESOLU]
donc ça marche en partie puisque le fichier est bien renommé... mais pas copié
J'avoue que j'ai pas tout compris au problème... Cependant mv c'est pour déplacer, je saisis pas ce que tu veux dire par "copié". Si tu tapes par exemple mv file1 file2, file1 aura disparu après la commande c'est normal (plutôt il sera devenu file2).
En attendant :
read NOUVEL_ARTICLE
TYPE1=$(echo $NOUVEL_ARTICLE | awk '{print $1}')
TYPE2=$(echo $NOUVEL_ARTICLE | awk '{print $2}')
=
read TYPE1 TYPE2 TYPE3
Si c'est juste pour renommer y'a aussi la commande rename qui te sera surement plus secourable. Y'a des experts en rename ici ils vont pas tarder à passer ^^
Dernière modification par FRUiT (Le 15/03/2011, à 17:18)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#5 Le 16/03/2011, à 17:56
- FRUiT
Re : déplacer et renommer des fichiers mv + sed [RESOLU]
#!/bin/sh
read -p "Reference article ? " TYPE1 TYPE2 TYPE3
for file in ~/Bureau/xx*yy.pdf; do
[ -e "${file}" ] || continue
P=${file%/*}
F=${file##*xx} ; F=${F%%yy.pdf}
echo "mv ${file} ${P}/${TYPE1}${F}${TYPE2}.pdf"
done
Ca devrait marcher...
> ./renpdf
Reference article ? 12 13 1456789
mv /sh/tmp/xxEMByy.pdf /sh/tmp/12EMB13.pdf
Dernière modification par FRUiT (Le 16/03/2011, à 19:29)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#6 Le 17/03/2011, à 10:38
- Miroslav
Re : déplacer et renommer des fichiers mv + sed [RESOLU]
Merci pour tout. En faite j'avais lu quelque part que la fonction rename n'existait pas et que mv servait à ça. Du coup j'ai trouvé rename et j'ai opté pour ça
for file in *.pdf
do
/usr/bin/rename "s/xx/$TYPE1/g" "$file"
done
Hors ligne