Ecrire un script qui copie...
Résolu/Fermé
Chabanus
Messages postés
978
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2011
-
4 janv. 2008 à 01:10
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 - 4 janv. 2008 à 13:59
Chabanus Messages postés 978 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 11 novembre 2011 - 4 janv. 2008 à 13:59
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...
- Script vidéo youtube - Guide
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Ecrire en gras sur whatsapp - Guide
4 réponses
Franzux
Messages postés
8907
Date d'inscription
mercredi 5 décembre 2007
Statut
Contributeur
Dernière intervention
27 octobre 2015
1 145
4 janv. 2008 à 01:53
4 janv. 2008 à 01:53
Du genre :
;)
Cordialement.
mkdir old && for i in *.*; do cp "$i" ./old/"$i.old"; done
;)
Cordialement.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
4 janv. 2008 à 13:53
4 janv. 2008 à 13:53
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).
Chabanus
Messages postés
978
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2011
70
4 janv. 2008 à 13:59
4 janv. 2008 à 13:59
Merci pour tes explications jipicy, elles m'ont été trés utile, bonne journée
Chabanus
Messages postés
978
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2011
70
4 janv. 2008 à 13:29
4 janv. 2008 à 13:29
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.
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.