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
.