¿Es todo lo que no es un enlace simbólico?

12

¿ lsTiene alguna forma de mostrar condiciones negadas como "todos los archivos que no son un enlace simbólico"? Utilizo mucho este último en un directorio de proyectos, pero otras negaciones también serían útiles.

Por ahora, mi investigación solo ha llevado a crear un alias para algo "como":

find . -maxdepth 1 ! -type l | sort # (...)

pero obviamente de esta manera no obtengo el color ls, el formato de columna, etc.

Estoy en Bash v3 en OS X 10.8.2 y Bash v4 en Pangolin a veces.

Robottinosino
fuente

Respuestas:

14

En lugar de conectarlo sort, use ls.

find . -maxdepth 1 \! -type l -exec ls -d {} +

find . -maxdepth 1 \! -type l | xargs ls -d

Si usó el shell zsh, podría usar sus extensiones glob no portátiles:

ls -d *(^@)
Aleatorio832
fuente
Thx 4 la respuesta! ¿Por qué escapas? Parece estar funcionando incluso sin ... ¿Qué estoy arriesgando al no escapar? Interesante cómo usas un final +y no \;, ¿por favor explica?
Robottinosino
2
@Robottinosino El +hace que envíe todo a un solo lscomando en lugar de ejecutarlo por separado para cada archivo (de esta manera ls puede hacer las columnas y ordenarlas). Me escapé del! porque es un personaje especial para algunos proyectiles, aunque el suyo parece aceptarlo bien.
Random832
Gotcha ¡Buena cosa! ¿Estás de acuerdo en que es un poco laborioso, solo para negar un predicado de una manera simple ls? ¿Podría haber una mejor manera?
Robottinosino
1
@Robottinosino Editado con algo que zsh puede hacer. Sin embargo, no creo que bash pueda hacerlo.
Random832