2012-06-26 1 views
8

sto cercando di effettuare le seguenti operazioni su OSX:Come ls --ignore su OSX

ls -lR --ignore *.app

In modo che posso ricorsivamente la ricerca in tutte le cartelle eccezione per le cartelle .app.

Tuttavia sembra che non ci sembra essere nessuna opzione --ignore o --hide in Darwin.

Forse uno script per cercare ricorsivamente una cartella in profondità per un dato insieme e non sono sicuro non posso tubo ls -lR attraverso qualsiasi cosa a causa del formato dell'output:

./ROOT/Applications/Some_app: 
drwxr-xr-x 3 admin root 102 26 Jun 11:03 app-bundle.app #<- WANT THIS 
[email protected] 24 admin root 816 26 Jun 11:24 folder   #<- WANT THIS 

./ROOT/Applications/Some_app/app-bundle.app:     #<- DON'T WANT 
drwxr-xr-x 7 admin root 238 26 Jun 11:03 Contents   #<- DON'T WANT 
... 

risposta

7

Uso find:

find . -ls -name '*.app' -prune 
+0

trovare !! _hangs head in shame_ funziona come un incantesimo. Grazie (aspettando il ritardo nella risposta) – hoss

+0

la tua seconda iterazione è molto meglio. – hoss

+0

Pensateci ancora un po ', e può essere fatto anche più semplicemente. Sempre -ls. Se si tratta di un'app, -primavera. –

4

In bash, è possibile utilizzare il globbing esteso per escludere un modello.

shopt -s extglob # this must be on its own line 
echo !(*.app) # match everything except for the given pattern 

Se si dispone di bash versione 4 o superiore, è possibile utilizzare globstar per fare questo in modo ricorsivo.

shopt -s globstar 
shopt -s extglob 
echo **/!(*.app) 
+0

funziona, ha bisogno di un po' di amore awk ma, può essere ricorsivo? – hoss

+0

@hoss - solo su bash v4 o superiore, utilizzando globstar. Aggiunto alla risposta – jordanm

+1

Questa è una soluzione molto bella ed elegante. – hoss

-1

Un'alternativa è quella di pipe a grep:

ls | grep -v

+0

non è sicuro che questo risolverebbe la domanda in questione di non voler attraversare le directory .app in una lista ricorsiva. Se ho usato 'ls -R | grep -v ".app" 'Finisco con * tutti * i file * tranne * per la directory .app ma includendo tutti i file e le cartelle figlio. – hoss