Rechercher des fichiers et les sauvegarder avec la commande find

Mise en condition

Je dois tenter de récupérer des données suite à la réinstallation de Windows sur un disque dur qui n’avait pas été sauvegardé selon les règles de l’art.

Pouf, je démarre la machine avec une version Live de Ubuntu (même si j’utilise LinuxMint au quotidien) puis j’installe et je lance photorec (voir http://doc.ubuntu-fr.org/photorec pour plus de détails).

Cependant, une fois que le logiciel a terminé son œuvre, je me retrouve avec plein de fichiers dans pleins de dossier (en fait, j’ai juste laissé tourner 3 minutes pour le test).

Hum … Un bosseur acharné se doit d’être un fainéant ; un vrai fainéant (ça veut dire efficacité et efficience en informatique).

Bref, Alban ; dis-nous ; c’est comment qu’on fait ???

Si vous avez lu mon article Rechercher et supprimer des fichiers sous Linux vous connaissez la commande ; on cherche de cette manière :
find /media/alban/DD320/Recup/ -name "*.jpg"

(je cherche les fichiers ayant l’extension .jpg qui sont dans le dossier Recup d’un disque dur branché en USB)

Ho … les 157 fichiers sont dans 17 dossiers différents … Cool … Comment perdre du temps …

Bon, on va se créer un répertoire avec:
mkdir /media/alban/DD320/photos-copie-bis/

Puis on lance la commande find :
find /media/alban/DD320/Recup/ -name "*.jpg"

Et ensuite, on copie le résultat dans ledit dossier précédemment créé.

Commande en une seule ligne

Mais ; j’y pense ; vous voulez la commande tout-en-un ?
Oui ?

OK ; la voici :
mkdir /media/alban/DD320/photos-copie-bis/ && find /media/alban/DD320/Recup/ -name "*.jpg" -exec cp "{}" /media/alban/DD320/photos-copie-bis/ \;

Et voilà, j’ai mes 157 photos dans mon dossier (qui pourrait être juste une clef USB ; il suffit de choisir le bon chemin).

Merci qui ?

Merci lui !

Une seule ligne avec une variable

Comme on va jouer avec plusieurs type de fichiers, on s’est dit (lui et moi ou moi et lui ou réciproquement) que la réalisation d’une ligne avec juste un mot à changer serait plus drôle. Non ?
Oui ?
Oui !
Du coup, il suffit de modifier la partie X=’???’ pour que tout soit automatisé ensuite 🙂

X='avi' && mkdir /media/alban/DD500/$X-copie/ && find /media/alban/DD500/ -name "*.$X" -exec cp "{}" /media/alban/DD500/$X-copie/ \;

Hop, cadeau puisque vous avez lu jusqu’en bas

Afin de parfaire la chose, vous le voulez en mode “fainéant ultime” ?

Ce qui signifie “informaticien qui se la pète” ou “personne ayant simplifié les choses dans le but d’éviter les erreurs et les pertes de temps” (oui, la langue Française est riche de synonymes).

read -p "quelle est votre extension (sans le .) ? " X && mkdir /media/alban/DD500/$X-copie/ && find /media/alban/DD500/ -name "*.$X" -exec cp "{}" /media/alban/DD500/$X-copie/ \;

ou, en formatage plus lisible

read -p "quelle est votre extension (sans le .) ? " X \
&& mkdir /media/alban/DD500/$X-copie/ \
&& find /media/alban/DD500/ -name "*.$X" \
-exec cp "{}" /media/alban/DD500/$X-copie/ \;

Explication ?
Vous collez cette ligne dans le Terminal, vous répondez avi (ou jpg ou ce que vous voulez) et tous les fichiers en .avi présents sur le disque USB nommé DD500 seront copiés dans le dossier avi-copie créé automatiquement.

Bon, faites tout de même attention à la place disponible sur ce disque !

A bientôt,

 

P.S. : Cette commande vous permet de trouver des fichiers (-type f) sans extension (sans le “.””

find /media/alban/DD500/ -type f -a ! -name "*.*" 

A propos de Alban

Papa de 4 enfants étant lui même resté un enfant. Diététicien-Nutritionniste tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.