如何编写单行命令行调用来计算目录/ 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
有什么想法吗?
答案 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