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.