
ls -l
добавляет строку total (для общего числа блоков) в верхнюю часть своего вывода. Есть ли прямой способ отключить эту строку из вывода? Я знаю, что могу передать вывод в другую команду, чтобы удалить первую строку, но мне интересно, не упускаю ли я простой вариант для отключения этой строки в первую очередь.
решение1
Нет, вы не упускаете простой вариант удаления строки, по крайней мере , total
при выводе содержимого каталога (включая текущий, без аргументов). Например, в GNU параметры ls
, -l
, , и вызывают строку-g
-n
-o
-s
total
быть отображенным, без возможности его отключения:
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');
}
Это на самом делепредписано POSIX.
Однако если указать файлы для перечисления, а не каталог, ls
общее количество не будет показано; -d
опция заставляет каталоги рассматриваться как файлы, что дает желаемый результат, как указаноКостас:
ls -ld *
даст тот же результат, что и
ls -l
минус total
строка, при условии, что ваша оболочка не включает скрытые файлы при расширении *
( dotglob
) и при условии, что текущий каталог не содержит столько файлов, что расширение *
превышает максимальную длину командной строки.
Вы также можете указать каталог ( ls -ld /path/to/directory/*
), но в выводе будут перечислены файлы с указанным путем, в отличие от ls -l /path/to/directory
.