ls
no tiene ninguna opción para hacer eso, pero una de las cosas buenas de unix y linux es que las tuberías largas y poco elegantes pueden convertirse fácilmente en un script, función o alias de shell. y estos, a su vez, pueden usarse en tuberías como cualquier otro programa.
(NOTA: existen algunos problemas de alcance con las funciones y los alias. Los scripts están disponibles para cualquier ejecutable que pueda leerlos y ejecutarlos. Los alias y las funciones solo están disponibles en el shell actual, aunque el .profile / .bashrc, etc. de un sub-shell puede redefinir y así ponerlos a disposición. Además, se puede escribir un script en cualquier idioma, incluidos bash / sh, awk, perl, python y otros, el que sea mejor para el trabajo o con el que esté más familiarizado)
p.ej
alias lsf='find . -maxdepth 1 -type f -print0 | xargs -0r ls'
He agregado xargs para que pueda usar todas las ls
opciones habituales , p. Ej.lsf -lrS
Debido a que usa find
, se mostrarán todos los archivos de puntos normalmente ocultos, y todos los nombres de archivo tendrán el prefijo ./, esa es la única diferencia que notará.
Podría excluir archivos de puntos con, ! -iname '.*'
pero luego tendría que tener dos versiones del alias: una que mostrara archivos de puntos y otra que no.
alias lsf2='find . -maxdepth 1 -type f -a ! -iname '\''.*'\'' -print0 | xargs -0r ls'
Alternativamente, si lsf
fuera un script en lugar de un alias, podría analizar las opciones (tal vez con getopts o / usr / bin / getopt o similar), y excluir los archivos de puntos a menos que -a
estuvieran presentes.
find
comando es la mejor manera de hacer lo que quieres. ¡Para algunas otras opciones confiables, debe buscar comandos específicos de shell (y esos son cualquier cosa menos portátiles)!