
ls -l
agrega una línea total (para el número total de bloques) en la parte superior de su salida. ¿Existe una forma directa de suprimir esta línea de la salida? Sé que puedo canalizar la salida a otro comando para eliminar la primera línea, pero me pregunto si me falta una opción simple para suprimir esa línea en primer lugar.
Respuesta1
No, no te falta una opción simple para soltar la total
línea, al menos no cuando enumeras el contenido de un directorio (incluido el actual, sin argumentos). Por ejemplo, con GNU ls
, las -l
opciones -g
, -n
, -o
y -s
hacen que la total
líneapara ser mostrado, sin opción para desactivarlo:
if (format == long_format || print_block_size)
{
const char *p;
char buf[LONGEST_HUMAN_READABLE + 1];
DIRED_INDENT ();
p = _("total");
DIRED_FPUTS (p, stdout, strlen (p));
DIRED_PUTCHAR (' ');
p = human_readable (total_blocks, buf, human_output_opts,
ST_NBLOCKSIZE, output_block_size);
DIRED_FPUTS (p, stdout, strlen (p));
DIRED_PUTCHAR ('\n');
}
esto es en realidadordenado por POSIX.
Sin embargo, si especifica los archivos a enumerar, en lugar de un directorio, ls
no se mostrará el total; la -d
opción hace que los directorios sean tratados como archivos, produciendo el resultado deseado, como lo mencionacostas:
ls -ld *
producirá la misma salida que
ls -l
menos la total
línea, siempre y cuando su shell no incluya archivos ocultos al expandir *
( dotglob
) y siempre que el directorio actual no contenga tantos archivos que la expansión *
exceda la longitud máxima de la línea de comandos.
También puede especificar un directorio ( ls -ld /path/to/directory/*
), pero la salida enumerará los archivos con la ruta dada, a diferencia de ls -l /path/to/directory
.