Bonjour à tous.
D'abord je veux m'excuser car je suis pas francophone donc peut-être je vais faire des fautes grammaticales.
J'ai un netbook avec Xubuntu. J'ai utilisé un outil de recovery pour récuperer des donnés efacés du disque dur (des photos) Le problème c'est que le resultat c'est des milieurs de dosiers avec des images de tout genre.
J'ai utilisé le commande FIND pour seleccioner les .jpg de la façon suivante:
find /home/diego/Imágenes/ -iname "*.jpg"
Maintenant il me montre la routes des images mais je voudrais les selectioner et les copier toutes dans une autre dossier, mais j'ai aucune idée de comment le faire. Est-ce que qulqu'un pourrait m'aider?
Merci beaucoup.
# 3 suites
Posté par GG (site web personnel) . Évalué à 3. Dernière modification le 27 septembre 2015 à 11:58.
Bonjour,
Il y a au moins trois méthodes différentes.
Par contre, j'ai toujours utilisé l'une ou l'autre de ces méthode avec des commandes nécessitant qu'un seul argument… alors dans le cas d'un mv je ne sais pas comment tu vas faire, mais il n'y a pas de raisons que tu n'y arrives pas.
Fais l'essai depuis un autre dossier avec un échantillon d'images.
L'une ou l'autre des méthode peut poser un problème de mémoire si la liste des fichiers à traiter est particulièrement longue.
As-tu essayé testdisk, pour récupérer tes fichiers?
Bon courage
Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html
[^] # Re: 3 suites
Posté par cellophane . Évalué à 3. Dernière modification le 26 septembre 2015 à 15:56.
La 3eme commande me semble la plus simple + si besoin ajouter des guillemets autour de
{}
pour gérer les répertoires/fichiers avec des espaces.Ce qui donne
mkdir -p /home/diego/images && find /home/diego/Imágenes/ -iname "*.jpg" -exec cp "{}" /home/diego/images \;
cdlt
[^] # Re: 3 suites
Posté par Julien_J06 . Évalué à 2.
Et puis le cp est plus sûr que le mv aussi.
Je le note.
Julien_c'est_bien (y'a pas que Seb)
[^] # Re: 3 suites
Posté par Julien_J06 . Évalué à 1.
Salut Grégoire,
Avec la commande
find /home/diego/Imágenes/ -iname "*.jpg" | while read F ; do mv $F ; done
Que tu as donné il ne serait pas possible de générer un nombre incrémenté à l'étape
do mv $F
du typedo mv nbincrementé$F
Par ailleurs, le fichier F il est copié où avec cette commande ?
Julien_c'est_bien (y'a pas que Seb)
[^] # Re: 3 suites
Posté par Joris Dedieu (site web personnel) . Évalué à 4.
Je pense que xargs sera plus rapide que -exec. Par contre lorsqu'on récupère des données, il vaut mieux éviter de les reperdre. Je conseille donc une copie plutôt qu'on déplacement. Tu peux faire ça avec rsync
Avec le -n rsync ne fait rien (dry-run) il faut l'enlever lorsque la commande fait ce que tu souhaites.
# Option -exec
Posté par Julien_J06 . Évalué à 1.
Bonjour Buhako
Tu peux utiliser l'option -exec pour lui faire exécuter un move sur le résultat de la commande find
Il faut que tu crées le répertoire "tri" avant de lancer la commande.
le caractère
;
indique à find que la commande est finie et le caractère\
permet d'échapper le;
find /home/diego/Imágenes/ -iname "*.jpg" -exec mv {} /home/diego/tri \;
fait tout de même un test en procédant comme ça :
copie manuellement les 100 premiers fichiers de
/home/diego/Imágenes/
dans un répertoire/home/diego/Test
et lance la commande sur ce répertoire :find /home/diego/Test/ -iname "*.jpg" -exec mv {} /home/diego/Test \;
Vérifies que ça fait bien ce que tu veux.
Attention, si tu as des fichiers qui ont le même nom, ils seront écrasés.
exemple find trouve /dossier1/fichier1 et le copie dans /home/diego/tri puis find trouve /dossier2/fichier1 et le copie dans /home/diego/tri en écrasant le fichier précédent.
Julien_c'est_bien (y'a pas que Seb)
# 1er essai
Posté par Buhako . Évalué à 1.
Merci pour la réponse.
J'ai essaié de la façon suivante :
find /home/diego/Imágenes/ -iname "*.jpg" -exec mv -t /home/diego/Documentos/ {} +
Resultat --> Seulement 4 photos ont été copiés. Pour le reste j'obtiens un message : on peut pas bouger xxxxxx à yyyyyy. Permis refusé.
J'ai essaie avec sudo mais rien se passe.
Je suis très noob donc je suis sur je fais quelque chose mal.
Merci à nouveau.
[^] # Re: 1er essai
Posté par Julien_J06 . Évalué à 2. Dernière modification le 26 septembre 2015 à 16:25.
Buhako,
Il faut regarder qui est le propriétaire de ces fichiers en faisant un
ls -lh
Si tu vois que le propriétaire est un autre utilisateur que toi, alors fait un
sudo chown diego.diego -R *.jpg
voir unsudo chown diego.diego -R *.JPG
Julien_c'est_bien (y'a pas que Seb)
[^] # Re: 1er essai
Posté par moulator42 . Évalué à 2.
Faire un "cp" pour copier au lieu de "mv".
# Pour renommer tes photos
Posté par Julien_J06 . Évalué à 3.
Quand je classes mes photos/vidéos pour ne pas avoir de problèmes de noms de fichiers identiques, je les renommes par date de créations.
Je me suis fabriqué ce "script" qui extrait les données exif puis les mets en forme (et créé des fichiers txt pour chaque étapes)
Il faut installer
exif
programme en ligne de commande pour extraire les données exif des photos etpyrenamer
programme avec interface graphique qui permet de renommer en masse.En se plaçant dans le répertoire ou se trouvent les photos
exif *.JPG > ../0data.txt
ici un extrait du fichier
0data.txt
que j'obtiens avec la commande précédente.Récupère les dates de prises de vues (
<
"charge" le fichier../0data.txt
)<../0data.txt | grep "Date and Time (Origi" > ../0rename0.txt
Remplace une chaîne de caractère (ici
Date and Time (Origi|
par rien)sed 's/Date and Time (Origi|//' ../0rename0.txt > ../0rename1.txt
Remplace les
:
par des-
sed 's/:/-/'g ../0rename1.txt > ../0rename2.txt
Remplace les
par des
_
sed 's/ /_/'g ../0rename2.txt > ../0rename3.txt
Remplace le 14 ème caractère par h (ici
2014-09-28_12-49-02
devient2014-09-28_12h49-02
)sed -r 's/(.{13}).(.*)/\1h\2/' ../0rename3.tx ../0rename4.txt
(.{13})
désigne les 13 premiers caractères.
désigne le 14 ème caractère(.*)
désigne la suite de l'expression\1
reprends la chaîne de caractères désignée par(.{13})
h
remplace.
\2
reprends la chaîne de caractères(.*)
Remplace le 17 ème caractère par m (ici
2014-09-28_12h49-02
devient2014-09-28_12h49m02
)sed -r 's/(.{16}).(.*)/\1m\2/' ../0rename4.txt > ../0rename5.txt
Tu peux directement copier-coller dans le terminal toutes les commandes d'un coup :
Ensuite après avoir vérifié que le fichier
../0rename5.txt
est cohérent, je l'utilises danspyrenammer
avec le menu "fichier/charger les noms depuis un fichier"Julien_c'est_bien (y'a pas que Seb)
# Langue
Posté par Kerro . Évalué à 5.
Pour un non francophone, tu te débrouilles bien :-)
Une question non technique : qu'est ce qui fait que tu poses ta question ici, plutôt que sur un forum dans ta langue, ou un forum « général » comme http://superuser.com/ ou http://unix.stackexchange.com/ ?
[^] # Re: Langue
Posté par kursus_hc . Évalué à 2.
[^] # Re: Langue
Posté par Buhako . Évalué à 1.
J'ai tapé forum linux sur Google, et comment k'ai configuré Google en français c'etait le prémier résultat. Comme ça je profite pour pratique mon écriture ;)
# Résolu
Posté par Buhako . Évalué à 1.
Finalement les fichiers se sont bien deplacés.
Merci à tous pour vôtre aide et vôtre gentillese.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.