0

如何编写一个单行命令行调用来计算目录 /usr/bin、/bin 和 /usr/doc 中的文件总数?

到目前为止,我能想到的是使用

cd /usr/bin&&ls -l | wc -l

但我不知道如何将它们加在一起,例如:

(cd /usr/bin&&ls -l | wc -l) + (cd /bin&&ls -l | wc -l)

也许有更好的方法来做到这一点,比如获取每个目录的所有标准输出,然后通过管道传输到wc -l

任何想法?

4

4 回答 4

1

使用 find 命令 + wc -l 怎么样?

find /usr/bin /bin /usr/doc -type f |wc -l
于 2012-10-04T08:58:54.410 回答
1

假设 bash 或类似功能的 shell,您可以使用数组:

files=(/usr/bin/* /bin/* /usr/doc*)
num=${#files[@]}

此技术将正确处理包含换行符的文件名。

于 2012-10-04T13:23:08.927 回答
1

将 ls 用于多个目录并与 wc 结合使用会更简洁一些:

ls /usr/bin /bin /usr/doc | wc -l
于 2012-10-04T09:17:07.847 回答
0

正如 Kent 指出的那样, find 可能是首选,因为它会忽略目录条目。如果您需要符号链接,请对其进行调整。

除非您想递归到其中的任何意外目录,否则需要 -maxdepth(如果您的 find 支持)。如果由于某种奇怪的原因不存在目录,也会丢弃 stderr。

查找 /usr/bin /bin /usr/doc -maxdepth 1 -type f 2>/dev/null | wc -l
于 2012-10-04T10:24:04.473 回答