Voici un de ces petits cailloux qu’on retrouve parfois dans nos souliers, et qui savent si bien pourrir notre existence.
Le contexte est assez simple. On dispose d’un certain nombre de ressources. Images, polices de caractères, musiques, vidéos, brosses – pas les brosses à dents, mais bien les brosses graphiques pour The Gimp, PhotoShop ou autres :-) -, monnaie, peu importe. Ces ressources sont organisées et réparties au sein de plusieurs sous-dossiers. Ceci nous donne une architecture semblable à celle-ci, dont la profondeur sera plus importante suivant les cas :
Dans le moins compliqué des cas, tous les sous-dossiers seront sous un dossier principal, comme dans notre illustration. Dans les cas les plus complexes, ces sous-dossiers seront dispersés à la grandeur de notre système de fichiers!
L’enjeu : parcourir tous les sous-dossiers afin de récupérer les ressources, puis les déplacer (interagir) vers un emplacement prédéfini.
Avec juste quatre ou cinq ressources à manipuler, il ne devrait pas trop y avoir de soucis à se faire. Enfin, tout est relatif. Car après une solide journée ou semaine de travail, il n’est pas garanti que ce ne soit pas gênant. Quoiqu’il en soit, s’il y en a une cinquantaine à déplacer, cela peut vite devenir démoralisant.
Pas de trouble, voici quelques pistes de solutions:
Invite de Commandes sous Microsoft Windows
Il y a quelques années, j’avais réalisé cette tâche au moyen d’un script relativement complexe. J’appréhendais un peu le fait d’introduire les possibilités de la ligne de commande, mais j’espérais que les choses aient évolué depuis. Et ce fut un bon pari de ma part. De nouvelles options permettent de simplifier grandement cette opération.
La commande miracle est:
For /R %G in (*.extensionrecherchée) do [commande] “%G” “[CheminCibleIci]“
#KezakoKeDa
Ce que fait cette commande est assez simple
- For /R : la commande va parcourir de manière récursive tous les sous-dossiers situés dans l’arborescence de l’emplacement à partir duquel elle est exécutée
- *.extensionrecherchée : représente le masque symbolisant la nature de la recherche. Si vous cherchez à manipuler tous les fichiers mp3 d’une arborescence, ce sera *.mp3. Pour des polices ce sera *.ttf et pour des images *.png, par exemple. Et dans le cas où vous voulez toutes les images, il suffira d’écrire *
- [commande] : c’est la manipulation à effectuer sur les fichiers trouvés. Suivant les cas, ce pourra être move, pour les déplacer, copy pour les copier, ou autre
- [CheminCibleIci] : représente le chemin complet vers l’emplacement de destination des fichiers trouvés
Pour l’utiliser, il faudra donc :
- identifier le chemin complet de la destination
- ouvrir une invite de commandes à l’emplacement abritant tous les sous-dossiers à parcourir
- exécuter la commande
For /R %G in (*.extensionrecherchée) do [commande] "%G" "[CheminCibleIci]"
- se réjouir à la fin du processus
Ainsi, pour déplacer plusieurs fichiers musicaux répandus au sein d’un dossier de base Soka, afin de les regrouper au sein d’un dossier central WakataMusique, la commande à exécuter depuis le dossier Soka, en ligne de commande serait donc :
For /R %G in (*.mp3) do move "%G" "C:\DossierCentral\WakataMusique"
Terminal sous Linux
Une démarche semblable est disponible sous Linux. Sauf qu’ici, la commande à appliquer sera
find [EmplacementOrigine] -iname ‘CritereDeRecherche‘ -exec [Action@Effectuer] {} [EmplacementDestination] \;
avec
- [EmplacementOrigine] : chemin absolu vers le dossier parent abritant tous les sous-dossiers concernés
- CritereDeRecherche : critère permettant d’identifier les fichiers à manipuler
- [Action@Effectuer] : commande indiquant quelle action à appliquer aux fichiers, qu’il s’agisse de copie, de déplacement ou autre
- [EmplacementDestination] : chemin absolu vers le dossier final
Pour reprendre notre exemple précédent, ce serait donc
find /home/soka/Musique/ -iname '*.mp3' -exec mv {} home/soka/DossierCentral/WakataMusique/ \;
Encore plus simple encore!
Bien que ces deux manipulations soient relativement simples, figurez-vous qu’il existe un méthode encore plus simple. En effet, à partir d’un poste de travail sous Microsoft Windows, il est possible de se servir de l’outil de recherche intégré pour déplacer des montagnes fichiers. Voyez par vous-mêmes:
- Ouvrir l’explorateur de fichiers à l’emplacement parent où sont rassemblés les sous-dossiers abritant les fichiers recherchés
- Lancer l’outil de recherche. L’opération variera légèrement d’un système à l’autre. Mais sous Microsoft Windows 7 ou 10, il suffit de
- Saisir le critère de recherche et valider
- Lorsque le résultat apparaît, les fichiers recherchés devraient figurer au centre de la page. Sachant que l’opération a été réalisée au sein de l’explorateur de fichiers, il est donc possible d’appliquer à cette liste des fichiers n’importe quelle opération classique : ouvrir, renommer, ou … copier voire déplacer.
- Il ne vous reste plus qu’à effectuer l’opération en question
En plus, un des immenses avantages de cette méthode est que vos fichiers n’ont pas nécessairement à être tous dans des sous-fichiers au sein d’un même dossier parent. Vos fichiers pourraient être dispersés dans votre système de fichiers sans que cela n’affecte l’opérationnalité de cette astuce. Il vous suffira juste de sélectionner un dossier parent plus élevé, et le tour sera joué.
Et Soka!