Je pensais au motif glob:
**/(*|.*)
représenterait tous les dossiers et files commençant par dot ( .
) ou non, mais il saute les directorys dans le directory courant qui commence par .
.
Quel est le motif glob qui signifie:
chaque file et dossier qui peuvent ou ne peuvent pas commencer par
.
sur les dossiers actuels et plus profonds
- Comment vérifier si un glob a une extension?
- Comment sélectionner des files dans un script bash sans extension?
- Créer des liens symboliques vers des files en utilisant des caractères generics
- Comment puis-je utiliser un caractère générique pour faire correspondre uniquement les files et non les directorys?
- Comment puis-je extraire tous les files .htaccess d'une archive tar?
En outre: Comment puis-je exclure un dossier spécifique (ou même mieux, un sous-model glob) d'un schéma globulaire récursif tel que ci-dessus?
J'ai essayé ce qui suit pour exclure le dossier .hg
du niveau actuel (mais inclure d'autres dossiers commençant par le caractère .
):
**~.hg/*
mais il n'est pas allé récursivement dans des directorys plus profonds.
La façon la plus simple de créer un file de points globaux correspond à l'utilisation du qualificatif D
glob .
**/*(D)
La précédence de ~
est inférieure à /
, donc **~.hg/*
est **
less les correspondances pour .hg/*
. Mais **
est seulement spécial si c'est avant un /
, donc ici, il correspond aux files du directory courant. Pour exclure .hg
et son contenu, vous avez besoin
**/*~.hg~.hg/*(D)
Notez que zsh continuera à parcourir le directory .hg
, ce qui peut prendre du time; c'est une limitation de **
: vous ne pouvez pas définir une list d'exclusion directement à ce niveau.
**/*(D)
(abréviation de (*/)#*(D)
) inclut les dotfiles et les dotdirs comme déjà dit.
Si vous souhaitez exclure les directorys .hg
à tous les niveaux, vous avez besoin de:
(^.hg/)#^.hg(D)
(vous avez besoin de setopt extendedglob
pour l'opérateur ^
)
Comme nous l'avons déjà dit, le ~ pattern exclut les inputs (selon que leur extension complète correspond à "pattern" après que la list a été générée, ne l'empêchera pas de descendre dans les sous-dossiers).