comment avoir 'find' ne retourne pas le répertoire courant


11

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:


14

findrenvoie 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:

$ cd /tmp
$ mkdir a
$ touch a/b
$ mkdir a/c
$ touch a/c/d
$ find a
a
a/b
a/c
a/c/d
$ find a -mindepth 1
a/b
a/c
a/c/d

Référence: trouver la page de manuel


Excellent! fonctionne comme je le voulais. Je l'ai fait travailler en ajoutant! -nommez 'fichiers' mais ça me semblait mal ...
Pinpin

0

Changer de:

find /source/path/with/directories ...

à:

(shopt -s dotglob; find /source/path/with/directories/* ... )

Cette façon /source/path/with/directoriesne sera pas incluse.

Le shopt -s dotglobest 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 de shoptseulement dans le sous-shell, sinon vous devrez le défaire plus tard avec shopt -u dotglob.


Cela échouera pour les entrées de répertoire commençant par .. N'essayez pas non .*plus, ou vous allez correspondre à beaucoup d'autres choses que vous n'avez jamais eu l'intention de faire. ;-)
zigg

Bon point, mis à jour la réponse, ajouté en utilisant shopt.
janos
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.