Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/02/2023, à 16:30

Applejuice

Find exec et extensions

Bonjour,
J’ai répertoire avec des fichiers *.JPG et des fichiers *.RAF (version raw du *.JPG chez Fujifilm).
À certains *.RAF correspondent un *.JPG. Le suffixe du fichier .JPG est le même que le .RAF auquel il se rapporte ET il y a des .RAF sans .JPG correspondant.

Exemple :

ls -1
122.RAF
123.JPG
123.RAF
124.JPG
124.RAF
125.RAF
126.RAF
127.RAF

Je voudrais déplacer tous les fichiers .RAF auxquels correspond un fichier .JPG dans un autre répertoire (ici, les 123.JPG et 124.JPG).
Je pensais faire une ligne de commande find « trouver les fichiers .JPG » et exec « déplace les fichiers .RAF correspondant ».

Du genre

find . -iname "*.jpg" -exec  mv {} ./nouveaurepertoirre \;

Mais avec un {} dont on aurait changé le .JPG en .RAF.

Est-ce possible ?

Merci de votre lecture.

Hors ligne

#2 Le 12/02/2023, à 16:42

Watael

Re : Find exec et extensions

salut,

bof, bof. un find pour une recherche sans sous-répertoires est peu efficace, sans compter la contrainte d'une recherche de correspondance.

#!/bin/bash

src=./
dest='/chemin/repertoireDestination'
toMove=RAF
toMatch=JPG
files2check=( "$src/"*".$toMove" )

for f in "${files2check[@]}"
do
   test -f "${f%.*}.$toMatch" && mv "$f" "$dest/"
done

Dernière modification par Watael (Le 12/02/2023, à 16:42)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 12/02/2023, à 19:38

Applejuice

Re : Find exec et extensions

Salut Watael,

J'ai essayé ton script et, en effet, il sélectionne les fichiers RAF que je veux déplacer à partir de la présence d'un JPG.
Génial !! big_smile
Merci.

Cependant, j'ai modifié la ligne du répertoire de destination en

dest='/bon'

j'ai déposé le script (que j'ai appelé temporairement "script.bash") dans bin, j'ai créé un dossier "bon" dans le répertoire de mes photos et

fredo@fredo:~$ cd Bureau/Photos

ensuite

fredo@fredo:~/Bureau/Photos$ script.bash
mv: impossible de déplacer './/123.RAF' vers '/bon/': N'est pas un dossier
mv: impossible de déplacer './/124.RAF' vers '/bon/': N'est pas un dossier

J'ai essayé avec './bon' et cela donne le même résultat. sad

EDIT :
Avec

dest='.//bon'

ça marche.

Dernière modification par Applejuice (Le 12/02/2023, à 19:42)

Hors ligne

#4 Le 12/02/2023, à 21:07

Watael

Re : Find exec et extensions

dans un script, il vaut mieux toujours indiquer des chemins absolus (opposés aux chemins relatifs, stfw!)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne