Problème cp d'un directory avec des fichiers
r4ven
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
adrien1975 Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
adrien1975 Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Bonjour et bien voilà je suis étudiant en premiere en bac info et j'ai quelque exercices à faire sous linux ( centOS 6.5 ) je travail sous bash je vous explique ce qui ne va pas
l'exercice :
copier un repertoire Photos ( chmod 777 sur le dossier ) contenant : index.html photo1.jpg photo2.jpg photo3.jpg ( ce sont des fichiers nommé comme si c'était des photos ) et je dois les copier avec un script appellé ex5.sh qui va tout seul copié le dossier Photos en Photo_save et tout ce que contient mon dossier Photos sera a l'interieure copié dans le dossier de destination avec _save a la fin ( index.html_save...) il faudra aussi appeller le dossier de départ SOURCE_DIR et le dossier de reception DEST_DIR
cela ce présente comme suit à ca réussite:
alors je vous copie mon code ( celui du script nommé ex5.sh )
Alors le probleme que j'ai c'est que il fait bien un repertoire Photos_save mais à l'intérieur il ne met pas index.html_save il copie tout tel quel mais sans les _save pour les fichier contenu dans le dossier
la peut etre que 1 ou 2 petite choses ne vont pas non plus mais j ai essaye 300.000 trucs alors j'ai plus les idée claires lol
Merci d'avance
R4ven
l'exercice :
copier un repertoire Photos ( chmod 777 sur le dossier ) contenant : index.html photo1.jpg photo2.jpg photo3.jpg ( ce sont des fichiers nommé comme si c'était des photos ) et je dois les copier avec un script appellé ex5.sh qui va tout seul copié le dossier Photos en Photo_save et tout ce que contient mon dossier Photos sera a l'interieure copié dans le dossier de destination avec _save a la fin ( index.html_save...) il faudra aussi appeller le dossier de départ SOURCE_DIR et le dossier de reception DEST_DIR
cela ce présente comme suit à ca réussite:
./ex5.sh Photo
création d'un répertoire Photos_save
copie de Photos.index.html dans Photos_save/index.html_save
copie de Photos.photo1.jpg dans Photos_save/photo1.jpg_save
copie de Photos.photo2.jpg dans Photos_save/photo2.jpg_save
copie de Photos.photo3.jpg dans Photos_save/photo3.jpg_save
alors je vous copie mon code ( celui du script nommé ex5.sh )
#!/bin/bash SOURCE_DIR=$1 DEST_DIR=$1_save echo " Création du répertoire $DEST_DIR " mkdir $DEST_DIR for i in $(ls $SOURCE_DIR/*.*) do cp $i $1_save/$i_save echo " copie de $SOURCE_DIR/$i dans $DEST_DIR/$i_save " done
Alors le probleme que j'ai c'est que il fait bien un repertoire Photos_save mais à l'intérieur il ne met pas index.html_save il copie tout tel quel mais sans les _save pour les fichier contenu dans le dossier
la peut etre que 1 ou 2 petite choses ne vont pas non plus mais j ai essaye 300.000 trucs alors j'ai plus les idée claires lol
Merci d'avance
R4ven
A voir également:
- Problème cp d'un directory avec des fichiers
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Renommer des fichiers en masse - Guide
- Directory list & print - Télécharger - Divers Utilitaires
- Comment ouvrir un fichier bin ? - Guide
3 réponses
Yop, alors grand merci de m'avoir répondu :)
J'ai essayé " for i in ${SOURCE_DIR}/* " mais il me dit "Mauvaise substitution"
puis pour le "${i}" "${DEST_DIR}/${i#*/}_save" j'ai une question ( et j'ai essayer mais à mon avis je ne comprends pas bien comment l'insérer dans mon code ) et pq mettre des {} au lieu de () ??
Merci d'avance encore une fois :)
J'ai essayé " for i in ${SOURCE_DIR}/* " mais il me dit "Mauvaise substitution"
puis pour le "${i}" "${DEST_DIR}/${i#*/}_save" j'ai une question ( et j'ai essayer mais à mon avis je ne comprends pas bien comment l'insérer dans mon code ) et pq mettre des {} au lieu de () ??
Merci d'avance encore une fois :)
zipe31
Messages postés
36402
Date d'inscription
Statut
Contributeur
Dernière intervention
6 431
Je dit ptet nimporte quoi mais il faudrait pas remplacer $i_save par "$i"_save et pareil avec $1 pour la command cp ?
'lut, ça marche pas parce que
Du coup faut faire en sorte que LS produise une liste de fichiers sans le nom:
Mais du coup CP ne saura plus copier... à cause de la source, il faut donc lui re-préciser le dossier à chaque fois:
Constate que j'ai mis la forme longue d'expression des variables dans le 2e paramètre pour éviter toute ambigüité avec le "_save" derrière.
Pour le coup du CD dans le $(), je sais pas si c'est une bonne pratique ou pas, si toi, lecteur de ce post, est un
from human import idiocy
del idiocy
ls $SOURCE_DIR/*.*te donne le nom des fichiers avec le nom du dossier
$SOURCE_DIRdevant.
Du coup faut faire en sorte que LS produise une liste de fichiers sans le nom:
for i in $(cd $SOURCE_DIR;ls *.*)
Mais du coup CP ne saura plus copier... à cause de la source, il faut donc lui re-préciser le dossier à chaque fois:
cp "$SOURCE_DIR/$i" "$DEST_DIR/${i}_save"
Constate que j'ai mis la forme longue d'expression des variables dans le 2e paramètre pour éviter toute ambigüité avec le "_save" derrière.
Pour le coup du CD dans le $(), je sais pas si c'est une bonne pratique ou pas, si toi, lecteur de ce post, est un
bashiste, libre à toi de me gueuler dessus si ce n'est pas le cas.
from human import idiocy
del idiocy
Salut,
Mieux vaut privilégier un
Quant au problème du nom du répertoire, il suffit de jouer avec le remplacement des paramètres
Pour le coup du CD dans le $(), je sais pas si c'est une bonne pratique ou pas, si toi, lecteur de ce post, est un bashiste, libre à toi de me gueuler dessus si ce n'est pas le cas.Ce n'est pas tellement le
cd repqui est gênant, mais plutôt le
ls *.*qui est à proscrire, ne serait-ce qu'en cas d'espace dans un nom ;-(
Mieux vaut privilégier un
for i in ${SOURCE_DIR}/*beaucoup plus opportun.
Quant au problème du nom du répertoire, il suffit de jouer avec le remplacement des paramètres
cp "${i}" "${DEST_DIR}/${i#*/}_save"qui produira l'effet escompté ;-))
$ ./foo.sh photos
Création du répertoire photos_save
copie de photos/index.html dans photos_save/index.html_save
copie de photos/photo1.jpg dans photos_save/photo1.jpg_save
copie de photos/photo2.jpg dans photos_save/photo2.jpg_save
copie de photos/photo3.jpg dans photos_save/photo3.jpg_save
copie de photos/photo4.jpg dans photos_save/photo4.jpg_save