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. : Debian Stretch
Noyau : Linux 4.9.0-3-amd64
(G)UI : 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,

Hors ligne

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

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Raspbian
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. : Debian Stretch
Noyau : Linux 4.9.0-3-amd64
(G)UI : 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.

Hors ligne

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

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Raspbian
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

Pied de page des forums