J'ai un dossier composé de M
plusieurs sous-dossiers, chacun contenant des fichiers texte et N
images (*.png
)
Voici à quoi ressemble l'arbre:
/parent/
/sub-folder1/
/data1.dat
/data2.dat
/image1.png
/image2.png
...
/imageN.png
/sub-folder2/
/data1.dat
/data2.dat
/image1.png
/image2.png
...
/imageN.png
...
/sub-folderM/
/data1.dat
/data2.dat
/image1.png
/image2.png
...
/imageN.png
notez que toutes les images de chaque sous-dossier portent le même nom (par exemple: image1.png, ..., imageN.png
)
Ce dont j'ai besoin, c'est de déplacer uniquement les images dans un nouveau dossier parent (disons parent2
), tout en répliquant la structure des sous-dossiers. Une fois le déplacement terminé, le nouveau dossier parent devrait ressembler à ceci:
/parent2/
/sub-folder1/
/image1.png
/image2.png
...
/imageN.png
/sub-folder2/
/image1.png
/image2.png
...
/imageN.png
...
/sub-folderM/
/image1.png
/image2.png
...
/imageN.png
(ie: uniquement des images et respectant la même structure de sous-dossiers)
et le dossier parent
d'origine devrait ressembler à:
/parent/
/sub-folder1/
/data1.dat
/data2.dat
/sub-folder2/
/data1.dat
/data2.dat
...
/sub-folderM/
/data1.dat
/data2.dat
(ie: images déplacées)
J'ai vu quelques exemples de scripts qui peuvent déplacer tous les fichiers dans un nouveau dossier ( script Shell pour déplacer tous les fichiers des sous-dossiers vers le dossier parent ) ou certains qui ne peuvent déplacer que des images ( Script pour déplacer des images ) mais je n'en ai pas trouvé un qui le ferait alors que en respectant l'arborescence des sous-dossiers.
Vous pouvez essayer d'utiliser rsync:
rsync -av --include="*/" --include='*.png' --exclude='*' parent1 parent2
cela crée le répertoire parent2 et copie tous les fichiers avec l'extension .png avec une structure de sous-répertoire.
explication
$ cp -r parent1/ parent2 $ rm parent2/*/*.dat $ rm parent1/*/*.png