Ecrire un script qui copie...

Résolu
Chabanus Messages postés 1026 Statut Membre -  
Chabanus Messages postés 1026 Statut Membre -
Bonjour,
Je suis super débutant en shell et j'ai des problémes avec l'ecrtiture des scripts, j'aimerai que vous me donniez une idée pour que je puisse resoudre ce script:
-Ecrire un script qui copie la totalité des fichiers d'un repertoire nommé dossier 1 dans un deuxième repertoire en renomant les noms des fichiers en .old.
Je vous remercie d'avance, au plaisir de vous lire :)
A voir également:

4 réponses

Franzux Messages postés 9705 Statut Contributeur 1 145
 
Du genre :

mkdir old && for i in *.*; do cp "$i" ./old/"$i.old"; done


;)

Cordialement.
2
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

cp -r $1 $2
Le répertoire source et le répertoire destination sont donnés en paramètre au script.
$1 étant le 1er paramètre, $2 le second. Donc à partir de la, tous les répertoires contenus dans le répertoire source ($1) sont copiés récursivement dans le répertoire de destination ($2).

cd $2;
On se positionne dans le répertoire de destination

for i in `ls`;
Pour chaque élément résultant de la commande "ls"...
Là ce n'est pas très recommandé d'écrire cette syntaxe, car si un fichier comporte un espace dans son nom, il sera vu comme 2 éléments et non comme un seul !!! Mieux vaut privilégier celle forme :
for i in *
ce qui évitera l'erreur précédente.

do mv $i $i.old;
Remplacer chaque occurrence trouvée par elle même suivie de l'extension ".old". Là aussi pour concaténer 2 chaînes de caractères mieux vaut privilégier la forme :
mv "${i}" "${i}.old"
sans oublier les quotes doubles autour des variables (bonne habitude à prendre).

2
Chabanus Messages postés 1026 Statut Membre 70
 
Merci pour tes explications jipicy, elles m'ont été trés utile, bonne journée
1
Chabanus Messages postés 1026 Statut Membre 70
 
merci pour ta réponse Franzux ;)
Mes camarades ont fait cela, mais j'ai rien pigé :( :
#!/bin/bash
cp -r $1 $2
cd $2;
for i in `ls`; do mv $i $i.old; done ;

SI y'a quelqu'un qui pouvait m'eclaircir se serait sympa, merci d'avance.
-1