Recherche multiple de fichier

caro39

Membre confirmé
24 Septembre 2013
11
4
43
Bonjour,

J'aimerais savoir s'il est possible de faire plusieurs recherche à la fois. J'ai une liste de nom de fichiers images (plus de 1000 photos), j'aimerais à l'aide de cette liste retrouver les photos correspondes, qui se trouve sur un disque externe, sans avoir à les chercher 1 à 1 dans le finder.
Mes fichiers par ex:
p10100230.rw2
p10104566.rw2
....
j'ai rechercher toute l'aprem en vain j'espère que c'est juste parce que je suis pas doué et qu'il existe une solution que j'ai pas vu.
Existe-il au moins un séparateur qui me permettrait de saisir plusieurs nom à la fois?
ex: p10100230;p10104566;...
Je sais rechercher tout les rw2, je sais aussi rechercher tout le rw2 qui commence par p1010, il me reste donc juste a saisir la fin, ce qui irais encore assez vite si je pouvais taper 0230;4566;... tout à la suite

Merci de votre aide, j'espère que je suis assez clair et m'excuse par avance si le sujet à déjà été traité car j'ai pas retrouvé. J'avais vu un post de 2005, que je ne retrouve plus qui traitait du problème, la solution proposer était de passer par le terminal, j'ai essayé de faire un truc cela n'a pas marcher je ne sais absolument pas utiliser le terminal.
En gros je suis super mais alors super pas douée donc s'il existe une solution un peu technique merci de super détailler sinon je vais me perdre ;)

bonne soirée à tous
 
Bonjour,

Peux-tu être plus précise :
- que veux tu faire des photos que tu vas ainsi trouver ? les importer quelque part ? les déplacer ? les copier ?
- pourquoi la recherche des fichiers qui commencent par p1010 et se terminent par rw2 ne convient pas ? parce que par exemple il existe un fichier p1010quelquechose.rw2 qui ne t'intéresse pas ?
- sous quel forme disposes-tu de la liste des fichiers que tu veux trouver ? word ? excel ? papier ?

La réponse à ces questions facilitera la recherche de solutions,

Cordialement,
Nicolas
 
effectivement certain p1010quelchose.rw2 ne n'intéresse pas, je dispose de la liste sous forme informatique. Les photos se trouvent actuellement sur un disque dur externe avec toutes les autres je veux copier cette sélection(ma liste) dans un dossier séparer.

actuellement j'ai commencé 1 par 1 ça va vite certes mais vu le nombre c'est très long!!! j'ai les yeux qui pique ;-)
 
Bonsoir,

Question complémentaire : comment sont rangées les photos dans le disque dur ? Sont-elles toutes dans un même dossier ? ou bien rangées dans des dossiers différents ?

Cordialement,
Nicolas

---------- Nouveau message ajouté à 19h11 ---------- Le message précédent a été envoyé à 18h52 ----------

Bonsoir,

AVERTISSEMENT : un script peut avoir des effets indésirables. Assure-toi d'avoir des sauvegardes avant toute manip.

Si toutes tes photos sont dans un dossier "NomDuDossier" sur ton disque dur (sans sous-dossiers donc),
- remplis le nom de ton disque dur et de ta petite maison dans la variable "dossierCible"
- le script suivant copiera les 4 fichiers dont le nom est dans listeImages, vers le dossier "Cible" de ton bureau,.

Script à exécuter via l'application "Editeur Applescript".

Bloc de code:
set dossierSource to "Volumes:NomDuDisqueExterne:NomDuDossier:"
set dossierCible to "NomDuMac:Users:NomDePetiteMaison:Desktop:Cible"

set listeImages to {"IMG_0661.jpg", "IMG_0549.jpg", "IMG_1034.jpg"}

repeat with uneImage in listeImages
	set CheminImage to dossierSource & uneImage as alias
	tell application "Finder"
		move CheminImage to dossierCible
	end tell	
end repeat

Dis-moi ce qu'il faudrait changer ?
Cordialement,
Nicolas
 
Dernière édition par un modérateur:
Avec la commande find on peut chercher des fichiers avec pas mal de critères et appliquer une commande (copie, suppression etc.)
On peut commencer par tester la recherche puis ensuite appliquer les commandes. Pratique.

Pour faire des recherches on peut aussi utiliser EasyFind, bien pratique.
 
Bonsoir,

Question complémentaire : comment sont rangées les photos dans le disque dur ? Sont-elles toutes dans un même dossier ? ou bien rangées dans des dossiers différents ?

Cordialement,
Nicolas

---------- Nouveau message ajouté à 19h11 ---------- Le message précédent a été envoyé à 18h52 ----------

Bonsoir,

AVERTISSEMENT : un script peut avoir des effets indésirables. Assure-toi d'avoir des sauvegardes avant toute manip.

Si toutes tes photos sont dans un dossier "NomDuDossier" sur ton disque dur (sans sous-dossiers donc),
- remplis le nom de ton disque dur et de ta petite maison dans la variable "dossierCible"
- le script suivant copiera les 4 fichiers dont le nom est dans listeImages, vers le dossier "Cible" de ton bureau,.

Script à exécuter via l'application "Editeur Applescript".

Bloc de code:
set dossierSource to "Volumes:NomDuDisqueExterne:NomDuDossier:"
set dossierCible to "NomDuMac:Users:NomDePetiteMaison:Desktop:Cible"

set listeImages to {"IMG_0661.jpg", "IMG_0549.jpg", "IMG_1034.jpg"}

repeat with uneImage in listeImages
	set CheminImage to dossierSource & uneImage as alias
	tell application "Finder"
		move CheminImage to dossierCible
	end tell	
end repeat

Dis-moi ce qu'il faudrait changer ?
Cordialement,
Nicolas

Bonsoir,

toutes mes images sont dans plusieurs sous-dossier de plusieurs dossier, pour être precise j'ai un disque dur rempli de dossier SD1, SD2, SD3.... qui sont en fait des copies de mes cartes mémoires, chaque dossier comporte 3 sous dossiers, qui comporte des sous-dossier ... et dans l'un de ces sous-dossiers se trouve mes photos et ce pour chacun des dossier SD.
 
On peut faire quelque chose de simple mais un peu long (tu lances ça avant de déjeuner, au café ce sera fini ;)).

On peut définir un petit script :
Bloc de code:
#!/bin/sh

export MYLISTE="liste.txt"
export DESTDIR="/Volumes/Dest/photos"
export SRCDIR="/Volumes/Source"

for i in $(cat "$MYLISTE") ; do
  find "$SRCDIR" -name "$i" -exec cp {} "$DESTDIR" \;
done

Tu mets dans les trois variables, respectivement MYLISTE, DESTDIR et SRCDIR respectivement :
- le chemin complet du fichier contenant la liste des images à récupérer
- le chemin complet du dossier destination
- le chemin complet de la racine à partir de laquelle chercher les photos

Tu enregistres ça quelque part.
Personnellement, j'ai toujours dans la Maison un petit dossier "tmp" où je mets les fichiers temporaires. Donc admettons que tu enregistres ça dans le dossier tmp et que tu l'appelles "copie.sh".
Tu ouvres le Terminal et tu lances :
Bloc de code:
sh tmp/copie.sh
 
Bon j'ai jamais fait ça moi, j'ai jamais utiliser le terminal, mais bon faut bien une première alors j'ai besoin de précision pour bien comprendre, car un truc m'échappe....tout cela vous parait si simple a vous qui savez de quoi vous parlez, je me sens tout idiote avec mes questions mais bon, c'est comme ça, on peut pas tout savoir...

un script ok c'est des lignes de code, où dois-je les écrire? tu me dit d'enregistrer ça quelque part est-ce que cela veux dire que mon script doit être écrit dans un fichier genre textedit dont je change l'extension .txt en .sh et que je dois enregistrer dans un dossier appeler tmp?
la maison c'est quoi?

bon alors, j'ai créé un fichier avec textedit que j'ai renommé copie.sh et que j'ai enregistré dans un dossier nommé tmp qui ce trouve sur mon bureau, tout est bon?

#!/bin/sh

export MYLISTE="/Users/piedslibres/Desktop/liste.txt"
export DESTDIR="/Volumes/FREE FEET/PhotoRawSuite"
export SRCDIR="/Volumes/HD 2TO"

for i in $(cat "$MYLISTE") ; do
find "$SRCDIR" -name "$i" -exec cp {} "$DESTDIR" \;
done


après j'ai plus qu'a ouvrir le terminal et taper la fameuse ligne.

Dite moi si quelque chose m'a échappé

Merci
 
Bonjour,

Le script de Bompi sera certainement plus rapide que ce qui suit, mais au cas où...

ATTENTION : un script peut avoir des conséquences malencontreuses. Teste d'abord sur un premier jeu de données, et assure-toi d'avoir des sauvegardes !

Copie les lignes qui suivent dans Editeur AppleScript :

**************************************

set dossiersSource to choose folder with prompt "Choix d'un ou de plusieurs dossiers contenant les photos" with multiple selections allowed

global dossierCible
set dossierCible to choose folder with prompt "Choix du dossier de destination" without multiple selections allowed


global listeImages
set listeImages to {"IMG_7884.jpg", "IMG_7882.jpg", "IMG_7885.jpg", "IMG_7865.jpg", "IMG_7840.jpg", "IMG_7850.jpg", "IMG_7868.jpg", "IMG_7888.jpg", "IMG_7853.jpg", "IMG_7844.jpg", "IMG_7866.jpg", "IMG_7867.jpg", "IMG_7777.jpg"}

repeat with unDossierSource in dossiersSource
set unDossierSourceAlias to unDossierSource as alias
trouveImagesDansDossier(unDossierSourceAlias)
end repeat

on trouveImagesDansDossier(unDossierPourRecherche)
repeat with uneImage in listeImages
try
set CheminImage to ((unDossierPourRecherche as string) & uneImage) as alias
tell application "Finder"
move file CheminImage to folder dossierCible
end tell
end try
end repeat

tell application "Finder"
set listeDesDossiers to every folder of container (unDossierPourRecherche as alias)
end tell
repeat with unDossier in listeDesDossiers
trouveImagesDansDossier(unDossier)
end repeat
end trouveImagesDansDossier


*****************************

Tu modifies la variable listeImages pour y mettre la liste des noms de tes photos.

Tu exécutes le script, qui va te demander un dossier de départ (tu peux choisir un des sous dossiers dans lequel tu sais que tu as quelques photos, pour tester le fonctionnement ; tu peux également sélectionner plusieurs dossiers), puis de définir le dossier cible que tu choisiras sur ton disque dur externe.

Tu peux recommencer autant de fois que tu veux.

Si ton dossier cible est bien sur un DD externe, le script va copier tes photos, et non les déplacer.

Bon courage,
Nicolas
 
Dernière édition:
merci alors je vais commencer par texter la solution de bompi, est ce que j'ai bien compris ou pas comment il fallait faire?
 
Bon j'ai jamais fait ça moi, j'ai jamais utiliser le terminal, mais bon faut bien une première alors j'ai besoin de précision pour bien comprendre, car un truc m'échappe....tout cela vous parait si simple a vous qui savez de quoi vous parlez, je me sens tout idiote avec mes questions mais bon, c'est comme ça, on peut pas tout savoir...

un script ok c'est des lignes de code, où dois-je les écrire? tu me dit d'enregistrer ça quelque part est-ce que cela veux dire que mon script doit être écrit dans un fichier genre textedit dont je change l'extension .txt en .sh et que je dois enregistrer dans un dossier appeler tmp?
la maison c'est quoi?

bon alors, j'ai créé un fichier avec textedit que j'ai renommé copie.sh et que j'ai enregistré dans un dossier nommé tmp qui ce trouve sur mon bureau, tout est bon?

#!/bin/sh

export MYLISTE="/Users/piedslibres/Desktop/liste.txt"
export DESTDIR="/Volumes/FREE FEET/PhotoRawSuite"
export SRCDIR="/Volumes/HD 2TO"

for i in $(cat "$MYLISTE") ; do
find "$SRCDIR" -name "$i" -exec cp {} "$DESTDIR" \;
done


après j'ai plus qu'a ouvrir le terminal et taper la fameuse ligne.

Dite moi si quelque chose m'a échappé

Merci
Comme ça, ça me paraît pas mal.
 
Si le dossier tmp est dans le bureau, alors il faut sans doute taper quelque chose comme :
Bloc de code:
sh ~/Desktop/tmp/copie.sh
 
toujours pas :-(

find: /Volumes/HD 2TO/.DocumentRevisions-V100: Permission denied
find: /Volumes/HD 2TO/.Trashes: Permission denied


j'ai modifié le code copie.sh pour aller direct dans le bon dossier

#!/bin/sh

export MYLISTE="/Users/piedslibres/Desktop/liste.txt"
export DESTDIR="/Users/piedslibres/Desktop/PhotoRawSuite"
export SRCDIR="/Volumes/HD 2TO/Cartememoire2"

for i in $(cat "$MYLISTE") ; do
find "$SRCDIR" -name "$i" -exec cp {} "$DESTDIR" \;
done


mais ça n'a rien fait, pas de menace d'erreur, rien.
Comment doit être écrite ma liste dans le fichier text?
 
toujours pas :-(

find: /Volumes/HD 2TO/.DocumentRevisions-V100: Permission denied
find: /Volumes/HD 2TO/.Trashes: Permission denied
Ces messages, tu peux les ignorer : ces répertoires ne sont pas accessibles à un utilisateur normal et tes fichiers ne s'y trouvaient sans doute pas.
j'ai modifié le code copie.sh pour aller direct dans le bon dossier

#!/bin/sh

export MYLISTE="/Users/piedslibres/Desktop/liste.txt"
export DESTDIR="/Users/piedslibres/Desktop/PhotoRawSuite"
export SRCDIR="/Volumes/HD 2TO/Cartememoire2"

for i in $(cat "$MYLISTE") ; do
find "$SRCDIR" -name "$i" -exec cp {} "$DESTDIR" \;
done


mais ça n'a rien fait, pas de menace d'erreur, rien.
Comment doit être écrite ma liste dans le fichier text?
Faut pas avoir peur, comme ça... :D

Comme je le disais dans un autre fil, j'ai considéré que la liste contient le nom exact des fichiers (un par ligne) ; si c'est juste une partie du nom, mieux vaut mettre :

find "$SRCDIR" -iname "*${i}*" -exec cp {} "$DESTDIR" +

J'en profite pour remplacer le "\;" par "+" qui permet de minimiser (éventuellement) le nombre de commandes de copie.
 
Bonjour,

Ma liste contient bien le nom exact de la photo et un par ligne :

P1040388.rw2
P1040389.rw2
P1040684.rw2
P1040694.rw2
P1040722.rw2
P1040725.rw2
...
 
Soyons pragmatique. Que donne la commande suivante :
Bloc de code:
find [COLOR=navy]"/Volumes/HD 2TO/Cartememoire2" -name "[/COLOR][COLOR=navy][COLOR=Navy]P1040388.rw2"[/COLOR][/COLOR]
?