如何获取3个目录中的文件总数?

时间:2012-10-04 08:51:47

标签: shell

如何编写单行命令行调用来计算目录/ 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 个答案:

答案 0 :(得分:1)

如何使用find命令+ wc -l?

find /usr/bin /bin /usr/doc -type f |wc -l

答案 1 :(得分:1)

将ls与wc一起用于多个目录更简洁:

ls /usr/bin /bin /usr/doc | wc -l

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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

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

find /usr/bin /bin /usr/doc -maxdepth 1 -type f 2>/dev/null | wc -l