Lo mejor que pude encontrar a través de Google / man ls
fue:
ls -l | grep -v '^total'
¿Hay algo que me falta en las banderas ls
?
Además, ¿por qué el tamaño total en kb, independientemente de la bandera -h? tachar eso, parece que sí, no estoy seguro de lo que estaba viendo entonces.
ls -l | tail -n+2
, por lo demás no tengo una respuesta.lsl
. Solo 3 letras;) oh y ls -lh me muestran 1.2K tamaños con estilo.Respuestas:
Mirando el código fuente de
coreutils
, descubrí quetotal
siempre se mostrará al usar la-l
opción en los directorios .El uso de la
-d
opción para enumerar las entradas en lugar de ocultar el contenido del directoriototal
. Pero si lo ejecuta sin argumentos (o en un directorio), solo mostrará el directorio y no su contenido. Por lo tanto, necesita comodines.*
coincide con todos los archivos y.*
coincide también con los archivos ocultos (que corresponde con la-a
opción):En cuanto a la
-h
opción, funciona para mí. 1118360 bytes aparecen como 1.1M. Los archivos de menos de 1024 aparecen en bytes.fuente
ls
página del manual al pie de la letra o considerar esto:ls /
puede interpretarse como "enumere la entrada/
si es un archivo o el contenido del directorio/
si es un directorio". El uso-d
elimina la última condición y siempre imprimirá la entrada en lugar del contenido del directorio. Esto se aplica sin importar si una ruta es un archivo o directorio.El uso de comodines para evitar que se
ls
ejecute la lista de directorios es subóptimo, ya que le impide usarls
opciones como--almost-all
.Al igual que la sugerencia de Enzotib , la forma más sencilla de eliminarlo es canalizarlo
tail
para cortar la primera línea. Sin embargo,ls
detectará que su salida es una tubería en lugar de interactiva y cambiará sus valores predeterminados de forma no deseada. Por lo tanto, para hacerlo robusto, también debe agregar algunas opciones:--color=always
: sigue mostrando colores--hide-control-chars
: imprime?
nombres de archivos en lugar de caracteres de control que podrían estropear la salida de la consolaTengo un script
~/bin/l
(también puedes usar un alias Bash en~/.bash_aliases
):También puede agregar cualquier otra
ls
opción que desee de forma predeterminada, por ejemplo--group-directories-first --time-style='+%FT%T.%N%:::z' --indicator-style=slash
.fuente
ls -l *
Le dará el contenido de la carpeta "normalmente nombrado" sin el
total
. Eso podría ser adecuado para sus necesidades. Desafortunadamente, no le dará losdot
archivos con prefijo. Si lo usals -l * .*
, obtendrá un desastre ya que Linux navegará hacia arriba en el árbol.Tenga en cuenta que el prefijo de punto podría significar la carpeta o, con un comodín, significa la carpeta anterior, por lo que no le ayuda a elegir archivos normales con prefijo de punto. Esto parece haber sido una decisión de diseño desafortunada.
fuente
Nota:
Lo siguiente no funciona si tiene un archivo llamado "total ..."
fuente