ls 与 wc 命令一起使用

gpu*_*guy 1 ls wc

命令是什么:

ls | wc -l
Run Code Online (Sandbox Code Playgroud)

做?我知道

wc <filename>
Run Code Online (Sandbox Code Playgroud)

给出行、词和字符,以及

wc -l <filename> 
Run Code Online (Sandbox Code Playgroud)

打印行数。但是它如何与 ls` 一起使用尚不清楚。它有什么作用?

Ank*_*nko 5

乍一看,它计算目录ls中的文件wc -l数(列出文件,计算它们)。

但是等等。尝试这个:

> mkdir test
> touch test/magic$'\n'newlines
> ls test | wc -l
2
Run Code Online (Sandbox Code Playgroud)

原来POSIX 标准允许在文件名中使用换行符。由于这种情况和其他边缘情况,计算目录中文件数量的一般方法要复杂得多

曾经有人谈论添加一个--zero标志来ls允许这种怪物被拆分(空字符在 POSIX 文件名中是非法的),但由于coreutils开发人员的抵制,它从未实现。

这样做ls | wc -l对于临时检查来说可能是安全的,但是当您需要符合标准的代码时不要依赖它。

  • 呃。+1 因为你是完全正确的,但是这种允许在文件名中使用换行符的荒谬情况只是...... *呃*。 (2认同)