Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Aux pros du terminal

8 réponses
Avatar
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

8 réponses

Avatar
Patrick Stadelmann
In article <1ixeudb.x56m5h1kfx9s2N%,
(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
Avatar
fra
Patrick Stadelmann wrote:

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
Avatar
Patrick Stadelmann
In article <1ixg329.1dd02vv1ljk2iuN%,
(Fra) wrote:

Patrick Stadelmann wrote:

> 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
Avatar
fra
Patrick Stadelmann wrote:

In article <1ixg329.1dd02vv1ljk2iuN%,
(Fra) wrote:

> Patrick Stadelmann wrote:
>
> > 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
Avatar
fra
Fra wrote:

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
Avatar
Patrick Stadelmann
In article <1ixg4kd.1op0fjfzw51ogN%,
(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
Avatar
Eric Levenez
Le 31/03/09 14:17, dans <1ixg4zq.15j0zhfdpocieN%, « Fra »
a écrit :

Fra wrote:

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 -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Avatar
fra
Patrick Stadelmann wrote:

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