Ecrire un script qui copie...
Résolu
Chabanus
Messages postés
1026
Statut
Membre
-
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 :)
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:
- Ecrire un script qui copie...
- Copie cachée - Guide
- Script vidéo youtube - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
4 réponses
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 :
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 :
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).