Boucle for + move de fichiers

Bonjour,

J'ai des petits soucis avec la commande for et le shell unix pour renommer des fichiers.
J'ai dans un fichier txt par exemple plusieurs lignes comme celle-ci :
/rep/rep/rep/rep1/fichier /dir/dir/dir/fichier2

je voudrais tout simplement les déplacer du premier argument fichier vers le deuxieme fichier2

Voici le script :
for file in "`cat list.txt`"
do
mv "$file"
done

Il me demande une destination.
Quelqu'un aurait-il une solution ?
Merci
Configuration: Windows Vista
Firefox 3.0.14

2 réponses

  1. Modérateur
    Salut,

    C'est ça que tu veux?
    lami20j@debian:~$ ls -l {aaa,bbb}1
    -rw-r--r-- 1 lami20j lami20j 0 oct 16 20:21 aaa1
    -rw-r--r-- 1 lami20j lami20j 0 oct 16 20:21 bbb1
    lami20j@debian:~$ ls -l {aaa,bbb}2
    ls: ne peut accéder aaa2: Aucun fichier ou répertoire de ce type
    ls: ne peut accéder bbb2: Aucun fichier ou répertoire de ce type
    lami20j@debian:~$ cat fic
    /home/lami20j/aaa1 /home/lami20j/aaa2
    /home/lami20j/bbb1 /home/lami20j/bbb2
    lami20j@debian:~$  for i in $(cat fic|tr " " "_");do mv -v ${i/_/ };done
    `/home/lami20j/aaa1' -> `/home/lami20j/aaa2'
    `/home/lami20j/bbb1' -> `/home/lami20j/bbb2'
    lami20j@debian:~$ ls -l {aaa,bbb}1
    ls: ne peut accéder aaa1: Aucun fichier ou répertoire de ce type
    ls: ne peut accéder bbb1: Aucun fichier ou répertoire de ce type
    lami20j@debian:~$ ls -l {aaa,bbb}2
    -rw-r--r-- 1 lami20j lami20j 0 oct 16 20:21 aaa2
    -rw-r--r-- 1 lami20j lami20j 0 oct 16 20:21 bbb2
    lami20j@debian:~$


    0
    1. C'est un peu tortueux, et rarement une bonne idée, d'utiliser for pour lire un fichier :
      while read src dest; do mv -v $src $dest; done < fic
      Cela dit, on peut éviter l'usage de cat par
      tr ' ' '_' < fic
      0
  2. Oui merci beaucoup
    0