#1 Le 04/07/2007, à 17:32
- pled
[Résolu] Recherche d'un type de fichier et copie dans un répertoire
Bonjour,
Je cherche à faire un script qui va me copier toutes les photos d'un disque externe (contenant des sous-répertoires) vers un répertoire donné, sans reproduire l'arborescence dans le répertoire de destination.
De plus le répertoire de destination contient des espaces.
J'ai lu l'article "recherche et copie de fichier" (http://forum.ubuntu-fr.org/viewtopic.php?id=128662) mais lui recrée l'arborescence de la source.
En le modifiant, je bute en fait sur les espaces que contient le répertoire de destination, et son utilisation comme variable dans le script ($reparrivee/$fic).
Mon dossier de départ est par exemple: /mnt/cf0024
Mon dossier de destination est: /data/Mes images/2007/Vacances Juin
Et je veux donc récupérer tous les fichiers .jpg du disque externe.
L'idéal (pour mes besoins) serait de passer en paramètre les 2 dossiers (source et destination) en lançant le script. Ou mieux encore que le script me le demande au lancement.
Si quelqu'un peut m'aider ?
Merci,
Dernière modification par pled (Le 09/07/2007, à 12:21)
Hors ligne
#2 Le 04/07/2007, à 20:25
- Uther Pendragon
Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire
La solution est probablement dans les guillemets. Admettons que tu ais les deux variables suivantes: $src_path et $dest_path, il faut écrire quelque chose du style
cp "$src_path/$fic" "$dest_path/$fic"
Un autre soucis auquel il faux penser, c'est les fichiers en doubles. Si tu as une arborescence source, il se peut que tu ais plusieurs fois des fichiers différents portants le même nom. Il faut donc dans ce cas éviter qu'ils s'écrasent mutuellement lorsque tu copies tout dans le même répertoire.
Vous êtes un PRO ? Vous avez besoin de conseils pour votre informatique ? Visitez www.gerst.fr
Hors ligne
#3 Le 05/07/2007, à 13:54
- yvon22
Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire
Bonjour,
tu peux utiliser la commande find pour trouver les fichiers et associer une commande de copie.
Pour afficher le nom de tous les fichiers ayant le type jpg à partir du répertoire courant :
find . -name "*.jpg" -ls
Pour copier tous les fichiers (testé rapidement sous AIX) :
find . -name "*.jpg" -exec cp {} /data/Mes_Images/. \;
Tu peux placer tout cela dans un script du type :
#!/bin/bash
# Format d'appel : nom-du-script repertoire-source repertoire-destination
#
cd $1
find . -name "*.jpg" -exec cp {} $2/. \;
#4 Le 06/07/2007, à 21:18
- pled
Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire
Merci pour les réponses.
La solution d'yvon22 me plait bien, en une seule commande. Les paramètres ne passent pas quand j'essaie le script, mais en ligne de commande ça marche. Ce n'est pas plus mal finalement: c'est une opération qui peut servir dans d'autres cas. Et en plus on apprend à utiliser la commande find !
Le pb des espaces se régle en mettant des guillemets, ce qui donne par exemple:
find /mnt/cf0024 -name "*.jpg" -ls -exec cp {} "/data/Mes images/2007/Vacances Juin/." \;
Il reste un truc que j'aimerai faire, c'est chercher aussi bien "*.jpg" que "*.JPG". J'ai regardé le man de find, ça n'a pas l'air possible.
Mais bon, je peux déjà faire ce que je veux.
Merci encore.
Hors ligne
#5 Le 08/07/2007, à 04:18
- syeric
Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire
Salut
As tu mis des guillemets pour les paramêtres d'exécution du script ?
En l'occurrence dans ton cas :
nom-du-script "/mnt/cf0024" "/data/Mes images/2007/Vacances Juin/"
Pour la commande il y a une deuxième variante possible :
cp `find /repertoire -name "*.jpg"` /repertoire2/
` c'est alt gr + 7 ;-)
Pour traiter les .jpg et .JPG en une fois, tu mets un && entre les deux commandes :
find blabla && find blabla
A+
Syeric
Dernière modification par syeric (Le 08/07/2007, à 04:45)
Hors ligne
#6 Le 08/07/2007, à 13:44
- BlaireauOne
Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire
Il reste un truc que j'aimerai faire, c'est chercher aussi bien "*.jpg" que "*.JPG". J'ai regardé le man de find, ça n'a pas l'air possible.
Mais bon, je peux déjà faire ce que je veux.
Réponse
find /mnt/cf0024 \( -name "*.jpg" -or -name "*.JPG" \) -ls -exec cp {} "/data/Mes images/2007/Vacances Juin/." \;
Hors ligne
#7 Le 09/07/2007, à 12:20
- pled
Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire
cool ! j'avais essayé "*.jpg" -or "*.JPG"...
je comprend mon erreur maintenant !
Et un petit [résolu] de plus.
Merci.
Hors ligne