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 "*.*"