Problème cp d'un directory avec des fichiers
r4ven
Messages postés
2
Statut
Membre
-
adrien1975 Messages postés 63 Statut Membre -
adrien1975 Messages postés 63 Statut Membre -
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
- Renommer des fichiers en masse - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment ouvrir un fichier bin ? - Guide
- Directory list & print - Télécharger - Divers Utilitaires
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
38797
Statut
Contributeur
6 433
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