Je dois trouver des sous-répertoires appelés “child” et copier les fichiers de ces dossiers dans un nouveau répertoire. Impossible de le faire fonctionner.
Je peux aller jusqu’à trouver les sous-répertoires, mais je ne peux pas copier les fichiers à partir d’eux.
> find /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/2016/03_2016 -type d -iname child
Ce qui précède trouvera tous les sous-répertoires dans 03_2016 nommés “child” mais comment puis-je maintenant copier les fichiers dans ces répertoires?
J’ai essayé ceci mais le problème est qu’il semble vouloir copier les répertoires eux-mêmes et pas seulement les fichiers:
> find /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/2016/03_2016 -type d -iname child | xargs cp '{}' /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/TEST \;
Je ne peux pas l’obtenir pour ne cibler que les fichiers.
Cela pourrait être un peu plus propre que la réponse ci-dessus:
find $(find /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/2016/03_2016 -type d -iname child | xargs) -type f -exec cp {} /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/TEST \;
Deux appels à trouver, un appel à xargs. Comme l’autre réponse, cela écrasera également les noms de fichiers en double.
Tu es proche:
> find $YOUR_PATH/03_2016/ -type d -iname child | xargs -I {} find -type f {} | xargs -I {} cp {} /Volumes/COMMON-LIC-PHOTO-1/STUDIO-COMPLETE/ISSUETRAK/TEST
Remarque: vous pouvez remplacer les fichiers qui partagent le même nom à la destination finale