/ / Récupère tout le contenu d’un dossier avec un sous-dossier copié dans un autre répertoire avec bash - bash

Récupère tout le contenu d'un dossier avec un sous-dossier copié dans un autre répertoire avec bash - bash

J'ai un répertoire qui contient beaucoup de dossiersqui ont encore des sous-dossiers et puis il y a quelques fichiers. Puis-je écrire un script bash qui copie tous les fichiers du répertoire donné dans un seul dossier? Pour ne pas avoir à parcourir un seul dossier et à copier le contenu dans un autre dossier.

Réponses:

1 pour la réponse № 1

Dans le premier répertoire sous lequel vous voulez copier les fichiers:

find . -type f -exec cp {} /some/new/location ;

Trouve tous les fichiers normaux et les copie ensuite dans /some/new/location


0 pour la réponse № 2

Vous pouvez utiliser find pour lister tous les fichiers du dossier:

find ./source -type f

et ensuite utiliser la sortie comme argument pour cp, cela ressemblerait à ceci:

cp $(find ./source -type f) destination

Il y aurait un problème s'il y a des fichiers dans l'arborescence de répertoires d'origine avec un nom en conflit. Dans ce cas, cp refuserait de copier des fichiers supplémentaires portant le même nom avec une erreur telle que:

cp: n'écrasera pas ce qui vient d'être créé destination/t22" with./source/test/t2/t22 "

Pour faire des copies de fichiers avec le même nom, vous pouvez utiliser l'option de sauvegarde, comme ceci:

cp --backup=numbered $(find ./source -type f) destination

Si vous voulez voir ce qui se passe, utilisez l'option -v (verbose)

cp -v --backup=numbered $(find ./source -type f) destination