Equivalente a Solaris per profondità / prugna?


10

Sto cercando di trovare alcuni file all'interno di una directory. Per impostazione predefinita, la ricerca commandsta cercando nella directory che ho specificato e nelle sue sottodirectory.

Ho provato a usare depth/maxdepthe prune, ma nulla ha aiutato a superare questo. Qualcuno può indicare il modo giusto di usare la profondità / potatura in Solaris?

Il mio codice è simile al seguente:

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

Ricevo il seguente errore:

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

Risposte:


15

Stai confondendo due opzioni non correlate che hanno nomi vagamente simili:

  • -depthnon prende nessuna discussione. Se presente, indica finddi elaborare il contenuto di una directory prima di elaborare la directory stessa.
  • -maxdepth N (dove N è un numero intero) limita la ricorsione a N livelli di sottodirectory.

L' -maxdepthopzione è un'estensione trovata in alcune versioni find, ma non di Solaris. C'è un trucco nell'usare solo le opzioni standard findper elaborare una directory senza ricorrere: utilizzare -prunenelle sottodirectory, ma escludere la directory di livello superiore. Poiché l'unico modo per abbinare la directory di livello superiore è per nome, disporre che il nome sia .(che non sarà mai il nome di una sottodirectory).

find /directory/to/traverse/. -name . -o \
                              -type d -prune -o \
                              -name '*.log' -print

Stavo affrontando proprio questo problema e questa soluzione ha aiutato. Ho trascorso una giornata cercando di trovare una soluzione per farlo funzionare. Grrr, Solaris.
Kevin Teljeur,

Vedi qualche problema usando sed per rimuovere /./ find $ {directory} / sh /. -nome . -o -type d -prune -o -print | sed 's /\/\.\//\//'
Ethan Post

@EthanPost Puoi farlo, ma trova implementazioni senza -mindepthe -maxdepthsono una razza in via di estinzione. Se la tua scoperta ha -maxdepth, usafind /directory/to/traverse -mindepth 1 -maxdepth 1 -name '*.log'
Gilles 'SO- smetti di essere malvagio'

@Gilles Ne prende solo uno per romperti quando stai costruendo un framework che potrebbe essere necessario eseguire proprio in tale circostanza! Un giorno quel mercato potrebbe essere il mio pane e burro! Grazie per l'aiuto.
Ethan Post,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.