Aux pros du terminal

Le
fra
Hello

Alors voilà : j'ai une liste de fichiers images dont j'ai réduit la
taille (des copies) pour mettre dans mon cadre photo.
J'aimerais avoir ce même diaporama mais avec les grandes images
originales sur mon écran d'ordi.

Le problème est que ces originales sont dispersées dans différents
dossiers.
Heureusement les réduites ont les mêmes noms que les originales.

Comment retrouvées les originales et en faire une copie dans un dossier
déterminé ?
(J'ai éventuellemnt déjà fait, par un simple copier coller, une
liste.txt de ces fichiers.)
Tout cela bien sûr automatisé (y'a plus de 100 fichiers).

Merci d'avance.
--
Fra
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrick Stadelmann
Le #19017911
In article (Fra) wrote:

Alors voilà : j'ai une liste de fichiers images dont j'ai réduit la
taille (des copies) pour mettre dans mon cadre photo.
J'aimerais avoir ce même diaporama mais avec les grandes images
originales sur mon écran d'ordi.

Le problème est que ces originales sont dispersées dans différents
dossiers.
Heureusement les réduites ont les mêmes noms que les originales.

Comment retrouvées les originales et en faire une copie dans un dossier
déterminé ?
(J'ai éventuellemnt déjà fait, par un simple copier coller, une
liste.txt de ces fichiers.)
Tout cela bien sûr automatisé (y'a plus de 100 fichiers).



Sans garantie... J'avais utilisé ça pour un problème similaire. Ca
utilise Spotlight, donc ça suppose que le dossier où l'on cherche n'est
pas exclu de la recherche.

Commencer par essayer ça, qui ne copie rien mais liste les fichiers
trouvés (tout sur une seul ligne)

while read line; do mdfind -0 -onlyin 'Documents' "kMDItemFSName = '$line'" | xargs -0 ; done < 'liste.txt'

sur une seule ligne, en remplaçant

Documents = dossier où restreindre la recherche
liste.txt = fichier avec le nom des fichier (un par ligne, avec une
ligne vide à la fin).



Si la liste affichée est correcte, faire la copie avec :

while read line; do mdfind -0 -onlyin 'Documents' "kMDItemFSName = '$line'" | xargs -0 -J % cp "%" 'OUT' ; done < 'liste.txt'

en remplaçant en plus

OUT = dossier existant où copier

Patrick
--
Patrick Stadelmann
fra
Le #19021441
Patrick Stadelmann
while read line; do mdfind -0 -onlyin 'Documents' "kMDItemFSName = > '$line'" | xargs -0 ; done < 'liste.txt'



Cette commande n'envoie pas de réponse. Retour au prompt.

" == " c'est un retour à la ligne ? (j'ai essayé avec et sans de toutes
façons) (et, avec et sans espace après le " ==")
--
Fra
Patrick Stadelmann
Le #19022101
In article (Fra) wrote:

Patrick Stadelmann
> while read line; do mdfind -0 -onlyin 'Documents' "kMDItemFSName = > > '$line'" | xargs -0 ; done < 'liste.txt'

Cette commande n'envoie pas de réponse. Retour au prompt.

" == " c'est un retour à la ligne ? (j'ai essayé avec et sans de toutes
façons) (et, avec et sans espace après le " ==")



Non, c'est tout sur une ligne. Essaye :

while read line; do echo $line ; done < 'liste.txt'

pour voir si la liste est OK. Puis :

mdfind -onlyin 'Documents' "kMDItemFSName == FICHIER.JPG"

en remplaçant Documents comme avant et FICHIER.JPG par un des fichiers
recherché.

Patrick
--
Patrick Stadelmann
fra
Le #19020431
Patrick Stadelmann
In article (Fra) wrote:

> Patrick Stadelmann >
> > while read line; do mdfind -0 -onlyin 'Documents' "kMDItemFSName = > > > '$line'" | xargs -0 ; done < 'liste.txt'
>
> Cette commande n'envoie pas de réponse. Retour au prompt.
>
> " == " c'est un retour à la ligne ? (j'ai essayé avec et sans de toutes
> façons) (et, avec et sans espace après le " ==")

Non, c'est tout sur une ligne. Essaye :

while read line; do echo $line ; done < 'liste.txt'

pour voir si la liste est OK. Puis :

mdfind -onlyin 'Documents' "kMDItemFSName == FICHIER.JPG"

en remplaçant Documents comme avant et FICHIER.JPG par un des fichiers
recherché.



while read line; do echo $line ; done < '/Users/fra/Desktop/liste.txt'

me sort:

2005_06_30__20_17_36onument

qui est un "mix" de deux des noms de fichiers de la liste.
Bizarre.

m"d"f"i"n"d" "-"o"n"l"y"i"n"
"'"/"U"s"e"r"s"/"f"r"a"/"P"i"c"t"u"r"e"s"/"P"h"o"t"o"s"'"
"""k"M"D"I"t"e"m"F"S"N"a"m"e" "="="
"2"0"0"7"_"1"1"_"0"8"_"2"0"_"3"7"_"3"4"."J"P"G""""

me sort :

/Users/fra/Pictures/Photos/Roma (photos novembre
2007)/2007_11_08_20_37_34.JPG

Celui là il marche.

Est ce des accents ou des espaces ça peut géner dans la liste des
fichiers ? Ah oui aussi : la liste n'a pas les extensions .jpg (ça
devrait pas géner puisque c'est une recherche qui est faite).
--
Fra
fra
Le #19022581
Fra
m"d"f"i"n"d" "-"o"n"l"y"i"n"
"'"/"U"s"e"r"s"/"f"r"a"/"P"i"c"t"u"r"e"s"/"P"h"o"t"o"s"'"
"""k"M"D"I"t"e"m"F"S"N"a"m"e" "="="
"2"0"0"7"_"1"1"_"0"8"_"2"0"_"3"7"_"3"4"."J"P"G""""



il m'a fait un truc bizarre le copy/paste du terminal ! (le plus bizarre
c'est que ça se voyait pas quand j'ai composé mon post avec macsoup)
--
Fra
Patrick Stadelmann
Le #19023741
In article (Fra) wrote:

while read line; do echo $line ; done < '/Users/fra/Desktop/liste.txt'

me sort:

2005_06_30__20_17_36onument

qui est un "mix" de deux des noms de fichiers de la liste.
Bizarre.



C'est le retour de lignes qui ne sont probablement pas Unix. Si tu as
TextWrangler, tu peux corriger ça en faisant un "Enregister sous..." et
en modifiant le réglages sous "Options".

Est ce des accents ou des espaces ça peut géner dans la liste des
fichiers ?



J'avais testé avec les deux, chez moi ça fonctionnait.

Ah oui aussi : la liste n'a pas les extensions .jpg (ça
devrait pas géner puisque c'est une recherche qui est faite).



Oui, mais une recherche sur le nom exact ( le == ). S'il n'y a pas
l'extensions dans la liste, il faut remplacer :

"kMDItemFSName == '$line'"

par

"kMDItemFSName == '$line.*'"

Patrick
--
Patrick Stadelmann
Eric Levenez
Le #19022091
Le 31/03/09 14:17, dans
Fra
m"d"f"i"n"d" "-"o"n"l"y"i"n"
"'"/"U"s"e"r"s"/"f"r"a"/"P"i"c"t"u"r"e"s"/"P"h"o"t"o"s"'"
"""k"M"D"I"t"e"m"F"S"N"a"m"e" "="="
"2"0"0"7"_"1"1"_"0"8"_"2"0"_"3"7"_"3"4"."J"P"G""""



il m'a fait un truc bizarre le copy/paste du terminal ! (le plus bizarre
c'est que ça se voyait pas quand j'ai composé mon post avec macsoup)



C'est un très vieux bug connu de MacSoup lié au charbon qu'il a dedans. Je
pensais qu'il était corrigé depuis des années...

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.
fra
Le #19022691
Patrick Stadelmann
Oui, mais une recherche sur le nom exact ( le == ). S'il n'y a pas
l'extensions dans la liste, il faut remplacer :

"kMDItemFSName == '$line'"

par

"kMDItemFSName == '$line.*'"



Ca explique l'absence de résultat au premier test !!

Ca y est maintenant ça marche :
while read line; do mdfind -0 -onlyin '/Users/fra/Pictures/Photos'
"kMDItemFSName == '$line.*'" | xargs -0 ; done <
'/Users/fra/Desktop/liste.txt'

me sort ma liste de fichiers.


Et
while read line; do mdfind -0 -onlyin '/Users/fra/Pictures/Photos'
"kMDItemFSName == '$line.*'" | xargs -0 -J % cp "%"
'/Users/fra/Desktop/OUT' ; done < '/Users/fra/Desktop/liste.txt'

m'a fait ma copie de fichiers...


MMMEEERRRCCCIII !!!
--
Fra
Publicité
Poster une réponse
Anonyme