Renommer des fichiers à partir de deux colonnes

Renommer des fichiers à partir de deux colonnes - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-05-2013 à 14:43:18    

Bonjour,
je suis à la recherche d'un script ou d'un logiciel qui pourraient effectuer la tache suivante:
 
un fichier (excel, csv ou txt) avec une liste en colonne A (nom de fichier actuel) et une colonne B (nom de fichier futur)
Le but étant que les fichier soit renommer de A vers B.
 
ex:
test1.jpg;new_test1.jpg
feuille.xls;new_feuille.xls
A.png;new_test2.png
 
Quelqu'un a une idée pour effectuer cette opération?
 
Merci d'avance à tous.

Reply

Marsh Posté le 27-05-2013 à 14:43:18   

Reply

Marsh Posté le 27-05-2013 à 14:50:02    

Tu lis ton fichier ligne à ligne et pour chaque ligne tu demandes a awk de créer deux variables. Tu fais ton move et tu recommence à la prochaine itération.


Message édité par Fork Bomb le 27-05-2013 à 14:50:28

---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 27-05-2013 à 15:49:32    

propose un script et on t'aidera à l'améliorer en allant :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 28-05-2013 à 20:40:42    

jiraya a écrit :

Bonjour,
je suis à la recherche d'un script ou d'un logiciel qui pourraient effectuer la tache suivante:
 
un fichier (excel, csv ou txt) avec une liste en colonne A (nom de fichier actuel) et une colonne B (nom de fichier futur)
Le but étant que les fichier soit renommer de A vers B.
 
ex:
test1.jpg;new_test1.jpg
feuille.xls;new_feuille.xls
A.png;new_test2.png
 
Quelqu'un a une idée pour effectuer cette opération?
 
Merci d'avance à tous.


 
Bonjour,
 
As-tu bcp de lignes dans ton fichier ? Si tu n'as pas bcp de ligne et que même si les perfos ne seront pas au rdz.
Sinon si ton fichier est énorme, je te conseille du awk, perl ou python.  
 
J'ai pris l'hypothése que ton fichier d'entrée s'appele Input.txt et que l'ancien nom et le nouveau nom est délimité par un ';'
En shell type ksh, je te propose cela.

Code :
  1. for Fic in `cat Input.txt`
  2. do
  3. Old=`echo ${Fic} | cut -f1 -d\; `
  4. New=`echo ${Fic} | cut -f2 -d\; `
  5. echo mv $Old $New
  6. done


 
Si aprés avoir executé ton shell, tu vois apparaitre à l'écran les commandes bien formatées, tu peux supprimer la commande 'echo' et relancer ton shell
(ne pas oublier le chmod +x sur ton shell et le shebang #!/bin/local/ksh de mémoire)


Message édité par phdenis le 28-05-2013 à 20:42:44
Reply

Marsh Posté le 30-05-2013 à 23:10:05    

Code :
  1. oifs="$IFS" ; IFS=";" ;while read old new  ; do echo mv "$old" "$new" ; done < temp.csv ; IFS="$oifs"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed