Équivalent Solaris pour profondeur / taille?

10

J'essaie de trouver des fichiers dans un répertoire. Par défaut, la recherche commandrecherche le répertoire que j'ai spécifié et ses sous-répertoires.

J'ai essayé d'utiliser depth/maxdepthet prune, mais rien n'a aidé à surmonter cela. Quelqu'un peut-il indiquer la bonne façon d'utiliser la profondeur / l'élagage dans Solaris?

Mon code ressemble à ceci:

find file_path -depth 1 -name '*.log'

Je reçois l'erreur suivante:

find: bad option 1
find: [-H | -L] path-list predicate-list
user295338
la source

Réponses:

15

Vous confondez deux options sans rapport avec des noms vaguement similaires:

  • -depthne prend aucun argument. S'il est présent, il indique findde traiter le contenu d'un répertoire avant de traiter le répertoire lui-même.
  • -maxdepth N (où N est un entier) limite la récursivité à N niveaux de sous-répertoires.

L' -maxdepthoption est une extension trouvée dans certaines versions de find, mais pas celle de Solaris. Il y a une astuce à utiliser uniquement des options standard findpour traiter un répertoire sans récursivité: utilisez -prunesur les sous-répertoires, mais excluez le répertoire de haut niveau. Étant donné que la seule façon de faire correspondre le répertoire de niveau supérieur est par nom, faites en sorte que le nom soit .(qui ne sera jamais le nom d'un sous-répertoire).

find /directory/to/traverse/. -name . -o \
                              -type d -prune -o \
                              -name '*.log' -print
Gilles 'SO- arrête d'être méchant'
la source
J'étais confronté à ce problème et cette solution a aidé. J'ai passé une journée à essayer de trouver une solution pour que cela fonctionne. Grrr, Solaris.
Kevin Teljeur
Voyez-vous un problème lors de l'utilisation de sed pour supprimer le fichier /./ find $ {directory} / sh /. -Nom . -o -type d -prune -o -print | sed 's /\/\.\//\//'
Ethan Post
@EthanPost Vous pouvez le faire, mais trouvez des implémentations sans -mindepthet -maxdepthêtes une race en voie de disparition. Si votre trouvaille existe -maxdepth, utilisezfind /directory/to/traverse -mindepth 1 -maxdepth 1 -name '*.log'
Gilles 'SO- arrêtez d'être méchant'
@Gilles en prend juste un pour vous briser lorsque vous construisez un cadre qui peut avoir besoin de fonctionner dans une telle circonstance! Ce marché sera peut-être un jour mon pain et mon beurre! Merci pour l'aide.
Ethan Post