現在のディレクトリのファイル数を数えようとしたところ、ls -1 | wc -l
次の意味が見つかりました。ファイルのリスト(各ファイル名が新しい行に印刷されます)をwcの入力として送信します。ここで、-l
入力行数が計算されます。 。これは意味があります。
私は試してみることにしましたが、ls | wc -l
正確な数のファイルが提供されて非常に驚きました。ls
オプションのないコマンドはファイル名を1行に印刷するので、なぜこれが起こるのか疑問に思います。
ベストアンサー1
からinfo ls
:
'-1'
'--format=単一列'1行に1つのファイルを一覧表示します。 これは、標準出力が端末でない場合の「ls」のデフォルトです。
出力をパイプすると、ls
各行にファイル名が与えられます。
ls
出力が人の目のためだけに列単位でファイルを出力します。
ここでls
何をするかを決定します。
switch (ls_mode)
{
case LS_MULTI_COL:
/* This is for the 'dir' program. */
format = many_per_line;
set_quoting_style (NULL, escape_quoting_style);
break;
case LS_LONG_FORMAT:
/* This is for the 'vdir' program. */
format = long_format;
set_quoting_style (NULL, escape_quoting_style);
break;
case LS_LS:
/* This is for the 'ls' program. */
if (isatty (STDOUT_FILENO))
{
format = many_per_line;
/* See description of qmark_funny_chars, above. */
qmark_funny_chars = true;
}
else
{
format = one_per_line;
qmark_funny_chars = false;
}
break;
default:
abort ();
}
源泉:http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c