Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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]

FRUiT a écrit :
for file in `ls ~/Bureau | grep pdf` ; 

:f34r: !!

for file in ~/Bureau/*.pdf ; 

smile 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]

Miroslav a écrit :

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