J'ai remarqué récemment que les spécifications POSIX pour find
n'incluez pas le -maxdepth
primaire.
Pour ceux qui ne le connaissent pas, le but de -maxdepth
le principal est de restreindre le nombre de niveaux de profondeur find
va descendre. -maxdepth 0
résultats dans seulement arguments de ligne de commande en cours de traitement ; -maxdepth 1
traiterait uniquement les résultats directement dans les arguments de la ligne de commande, etc.
Comment puis-je obtenir le comportement équivalent au non-POSIX -maxdepth
primaire en utilisant uniquement les options et outils spécifiés par POSIX ?
(Remarque :Bien sûr, je peux obtenir l'équivalent de -maxdepth 0
en utilisant simplement -prune
comme premier opérande, mais cela ne s'étend pas à d'autres profondeurs.)
Réponse acceptée :
Vous pouvez utiliser -path
pour correspondre à une profondeur donnée et y tailler. Par exemple
find . -path '*/*/*' -prune -o -type d -print
serait maxdepth 1, comme *
correspond au .
, */*
correspond à ./dir1
, et */*/*
correspond à ./dir1/dir2
qui est taillé. Si vous utilisez un répertoire de départ absolu, vous devez ajouter un /
de tête au -path
aussi.