2012-06-26 13 views
8

que estoy tratando de hacer lo siguiente en OSX:Cómo ls --ignore en OSX

ls -lR --ignore *.app

De modo que pueda buscar de forma recursiva a través de todas las carpetas excepto para las carpetas .app.

Sin embargo, parece que no parece haber opciones de --ignore o --hide en Darwin.

Tal vez una secuencia de comandos para buscar de forma recursiva una carpeta profunda para un conjunto dado y no estoy seguro no puedo tubería ls -lR través de cualquier cosa debido al formato de la salida:

./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 
... 

Respuesta

7

Uso find:

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

find !! La cabeza de vergüenza en la vergüenza funciona como un encanto. Gracias (esperando retraso en la respuesta) – hoss

+0

su segunda iteración es mucho mejor. – hoss

+0

Lo pensé un poco más, y se puede hacer aún más simple. Siempre -ls. Si es una aplicación, -día. –

4

En bash, puede utilizar globbing extendido para excluir un patrón.

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

Si tiene la versión 4 de bash o superior, puede usar globstar para hacerlo recursivamente.

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

funciona, necesita un poco de amor awk pero, ¿puede ser recurrente? – hoss

+0

@hoss - solo en bash v4 o superior, usando globstar. Agregado a la respuesta – jordanm

+1

Esa es una solución muy agradable y elegante. – hoss

-1

Una alternativa es la tubería a grep:

ls | grep -v

+0

no estoy seguro de que esto resolvería la cuestión de la mano de no querer atravesar los directorios .app en una lista recursiva. Si usé 'ls -R | grep -v ".app" 'Terminé con * todos * los archivos * excepto * para el directorio .app pero incluyendo todos los archivos y carpetas secundarios. – hoss