#1 Le 03/05/2012, à 17:42
- Jean-paul 3
Deplacer en fonction d'une liste pré-établie
Bonjour,
je me retrouve avec un dossier contenant plusieurs centaines (milliers) d'images.
Comment déplacer (en fait copier) par une commande ou un script bash une partie des images dont je possède le nom dans un fichier texte de ce dossier vers un autre dossier cible.
En fait comment extraire cette liste de nom afin de la renvoyer vers une commande cp.
D'avance merci
Hors ligne
#2 Le 03/05/2012, à 18:05
- Postmortem
Re : Deplacer en fonction d'une liste pré-établie
Salut,
En bash, tu pourrais faire ainsi :
while read
do
echo "$REPLY" "/destination"
# ou s'il n'y a pas le chemin du fichier dans la liste : echo "/chemin/$REPLY" "/destination"
done < liste_fichiers.txt
Si l'affichage des noms te semble correct, il te suffira de remplacer echo par mv (ou cp)
Dernière modification par Postmortem (Le 03/05/2012, à 18:06)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#3 Le 04/05/2012, à 07:27
- Jean-paul 3
Re : Deplacer en fonction d'une liste pré-établie
merci pour l'info, Postmortem
je suis en déplacement et je n'ai malheureusement pas de machine sous le coude
je teste ce WE et reviens vers le forum.
Hors ligne
#4 Le 04/05/2012, à 08:40
- credenhill
Re : Deplacer en fonction d'une liste pré-établie
hello
si il n'y a pas d'espaces dans les noms
cp $(cat liste) /destination
Hors ligne
#5 Le 09/05/2012, à 22:56
- Jean-paul 3
Re : Deplacer en fonction d'une liste pré-établie
yep,
les 2 fonctionnent parfaitement, merci à vous !
Hors ligne
#6 Le 11/05/2012, à 04:52
- nesthib
Re : Deplacer en fonction d'une liste pré-établie
À souligner que la solution de Postmortem est la meilleure, en particulier pour de nombreux fichiers d'une part car cela évite les problèmes de noms de fichiers spéciaux (avec espaces ou caractères spéciaux), d'autre part car la quantité d'arguments est limitée et pourrait être atteinte avec des milliers de fichiers par la méthode de credenhill.
Pour aller plus loin, je ne sais pas si ta liste a été créée à partir d'une recherche par mot clé, mais si c'est le cas tu peux utiliser une commande du type :
find … -exec mv "{}" /repertoire/cible \;
ou remplacer dans la boucle de Postmortem le « < liste_fichiers.txt » par un
< <(find …)
ps. je déplace car la section n'est pas adaptée, Trucs et Astuces et fait pour apporter des trucs et astuces, pas pour poser des questions…
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#7 Le 11/05/2012, à 08:57
- Watael
Re : Deplacer en fonction d'une liste pré-établie
salut,
s'il ne s'agit que de copier : rsync avec l'option --files-from
Connected \o/
Welcome to sHell. · eval is evil.
En ligne