使用 ls -l 禁止打印总行

使用 ls -l 禁止打印总行

ls -l在其输出的顶部添加一个总行(块总数)。有没有直接的方法来抑制输出中的这条线?我知道我可以将输出传输到另一个命令中以删除第一行,但我想知道我是否缺少一个简单的选项来首先抑制该行。

答案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行,只要您的 shell 在扩展*( dotglob) 时不包含隐藏文件,并且当前目录不包含太多文件,以致扩展*超出最大命令行长度。

您也可以指定目录 ( ls -ld /path/to/directory/*),但输出将列出具有给定路径的文件,这与ls -l /path/to/directory.

相关内容