Le -depth
principal qui lui find
fait effectuer une recherche en profondeur d'abord.
Cependant, la séquence par défaut n'est pas une recherche étendue.
La séquence par défaut pourrait être décrite de manière informelle comme une «traversée en profondeur d'abord qui gère les nœuds lorsqu'ils sont rencontrés pour la première fois plutôt que de le faire pendant le retour en arrière».
J'ai un réel besoin de recherche approfondie. Comment puis-je me find
comporter de cette façon?
Pour illustration, avec la configuration suivante:
$ mkdir -p alpha/{bravo,charlie,delta}
$ touch alpha/charlie/{alpha,beta,gamma,phi}
find
a le comportement par défaut suivant:
$ find alpha
alpha
alpha/charlie
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/delta
alpha/bravo
et avec -depth
, il fonctionne comme suit:
$ find alpha -depth
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/charlie
alpha/delta
alpha/bravo
alpha
Cependant, ce que je veux, c'est l'option (fictive) suivante:
$ find alpha -bfs
alpha
alpha/charlie
alpha/delta
alpha/bravo
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
En d'autres termes, je dois find
traiter / signaler tous les fichiers / répertoires à une profondeur donnée avant de poursuivre.
Comment puis-je faire ceci?
-bfs
ce ne serait pas tout à fait ce dont j'ai besoin ... J'ai un script simple qui génère un index pour un grand projet GitLab, adapté à l'inclusion dans le Wiki GitLab. Il rend les en-têtes hiérarchiquement basés sur les noms de répertoire. Cela fonctionne très bien, sauf que dans l'exemple de structure de fichier ci-dessus, il serait placé delta
sous le sous-en- charlie
tête, plutôt que sous l'en- alpha
tête parent .
find
sortie est triée par ordre alphabétique. Aucune idée pourquoi ....
-bfs
pourrait être utile, même si cela ne correspond pas parfaitement à ce cas d'utilisation.
find
(du moins, pas seulementfind
). Souhaitez-vous uniquement lister les fichiers ou souhaitez-vous utiliser d'autres primaires?