
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
シェルが*
( dotglob
) を展開するときに隠しファイルを含めず、現在のディレクトリに の展開が*
最大コマンドライン長を超えるほど多くのファイルが含まれていない限り、行を除いた値を使用できます。
ディレクトリも指定できます ( ls -ld /path/to/directory/*
) が、 とは異なり、出力には指定されたパスのファイルがリストされますls -l /path/to/directory
。