logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 11-02-2019 20:58:41

Antidentity
Membre
Distrib. : See signature
Noyau : Linux amd64
(G)UI : KDE / Openbox
Inscription : 03-08-2016

script ou astuce pour déplacer des fichiers en fonction d'une liste

Bonsoir tout le monde,

Je cherche un moyen facile pour déplacer des fichiers images pour qu'ils soient rangés identiquement à un répertoire déjà triés en 3 sous-répertoires. Je m'explique: j'avais un dossier avec des images que j'ai trié en 3 dossiers distincts.
J'ai plusieurs autres dossiers contenant, entre autres, les mêmes images mais avec des résolutions/tailles différentes.

Pour ne pas m'amuser à chaque fois retrier, fichier par fichier, chaque image de chaque dossier, est-il possible d'automatiser cette tâche facilement avec un script? Comme les images ont le même nom de fichier, je pensais qu'il devait être possible de lister les images par dossier et utiliser cette liste pour déplacer les images des autres dossiers à l'aide d'un script. Par contre, je n'ai aucune connaissance en scripts. Une bonne âme aurait-elle ce genre de script sous la main?

Merci à vous,

Debian - KDE / Openbox / Windows10

Hors ligne

#2 11-02-2019 22:35:11

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : script ou astuce pour déplacer des fichiers en fonction d'une liste

Pas certain que ça marche, mais tu peux essayer un truc dans le genre:

#!/bin/bash

find Mon_repertoire_de_reference > index.txt
find Mon_repertoire_a_trier > liste.txt

while read fichier
do
    cible=$(grep "${fichier##*/}" index.txt)
    cible=${cible%/*}
    if [ -d "$cible" ]
    then
        mkdir -p "temp/$cible"
        cp "$fichier" "temp/$cible"
    fi
done < liste.txt
 

Dernière modification par Beta-Pictoris (12-02-2019 08:15:09)

Hors ligne

#3 12-02-2019 20:47:53

Antidentity
Membre
Distrib. : See signature
Noyau : Linux amd64
(G)UI : KDE / Openbox
Inscription : 03-08-2016

Re : script ou astuce pour déplacer des fichiers en fonction d'une liste

Un tout grand merciiiiiiiiiiiiiiiiiii ! Ça fonctionne! J'ai juste remplacé le cp par mv. J'ai également des fichiers dont l'extension avait été changée, du coup, le script ne prend pas ces fichiers-là. Je ne trouve pas de paramètres à find pour supprimer l'extension dans la liste.

Debian - KDE / Openbox / Windows10

Hors ligne

#4 13-02-2019 20:47:47

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : script ou astuce pour déplacer des fichiers en fonction d'une liste

Comme ceci ? :

#!/bin/bash

find Mon_repertoire_de_reference > index.txt
find Mon_repertoire_a_trier > liste.txt

while read fichier
do
    name=$(basename "$fichier")
    name=${name%.*}
    cible=$(grep "$name" index.txt)
    cible=${cible%/*}
    if [ -d "$cible" ]
    then
        mkdir -p "temp/$cible"
        cp "$fichier" "temp/$cible"
    fi
done < liste.txt
 

Dernière modification par Beta-Pictoris (13-02-2019 20:48:56)

Hors ligne

#5 19-02-2019 21:22:21

Antidentity
Membre
Distrib. : See signature
Noyau : Linux amd64
(G)UI : KDE / Openbox
Inscription : 03-08-2016

Re : script ou astuce pour déplacer des fichiers en fonction d'une liste

Magnifique, ça fonctionne! Merci à toi! J'ai juste eu un retour dans le terminal de la part de grep:

grep: décompte maximal incorrect


Je crois que mon nombre de fichiers était trop grand. De même j'ai eu une différence dans le nombre de fichiers trouvés/copiés/déplacés en testant un dossier avec les images à la fois en jpg et png par rapport à un dossier contenant uniquement les images sources.


Debian - KDE / Openbox / Windows10

Hors ligne

#6 19-02-2019 21:31:21

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : script ou astuce pour déplacer des fichiers en fonction d'une liste

Utiliser rsync -av à la place de cp -r... aussi rapide que mv.
https://debian-facile.org/doc:reseau:rsync

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#7 19-02-2019 22:09:01

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : script ou astuce pour déplacer des fichiers en fonction d'une liste

Antidentity a écrit :

grep: décompte maximal incorrect


Remplace la ligne :

cible=$(grep "$name" index.txt)


Par :

cible=$(grep -- "$name" index.txt)

Dernière modification par Beta-Pictoris (19-02-2019 22:10:27)

Hors ligne

Pied de page des forums