J'essaie actuellement find
(et de copier) tous les fichiers et la structure de dossiers correspondant à un modèle spécifique, dans un répertoire spécifié et j'y suis presque!
Plus précisément, je veux copier récursivement tous les dossiers ne commençant pas par un caractère «_» à partir d'un chemin spécifié.
find /source/path/with/directories -maxdepth 1 -type d ! -name _\* -exec cp -R {} /destination/path \;
Dans / source / chemin / avec / répertoires / chemin sont des répertoires spécifiques à la machine commençant par '_' et d'autres, et je ne souhaite que copier les autres. Pour une raison qui me dépasse, la commande find renvoie le répertoire / source / path / avec / répertoires /, et copie donc son contenu, répertoires commençant par '_' inclus.
Quelqu'un a une idée de pourquoi?
Merci,
Pascal
Réponses:
find
renvoie le chemin racine car il correspond à vos critères, c'est-à-dire qu'il s'agit d'un répertoire et qu'il ne commence pas par_
.Vous cherchez
-mindepth 1
, je soupçonne:Référence: trouver la page de manuel
la source
Changer de:
à:
Cette façon
/source/path/with/directories
ne sera pas incluse.Le
shopt -s dotglob
est ainsi que*
correspondront également les fichiers et répertoires commençant par un.
(fichiers cachés, les répertoires).Et le tout est enveloppé dans un sous-shell avec
(...)
pour limiter l'effet deshopt
seulement dans le sous-shell, sinon vous devrez le défaire plus tard avecshopt -u dotglob
.la source
.
. N'essayez pas non.*
plus, ou vous allez correspondre à beaucoup d'autres choses que vous n'avez jamais eu l'intention de faire. ;-)shopt
.