如何编写一个单行命令行调用来计算目录 /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
任何想法?
如何编写一个单行命令行调用来计算目录 /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
任何想法?
使用 find 命令 + wc -l 怎么样?
find /usr/bin /bin /usr/doc -type f |wc -l
假设 bash 或类似功能的 shell,您可以使用数组:
files=(/usr/bin/* /bin/* /usr/doc*)
num=${#files[@]}
此技术将正确处理包含换行符的文件名。
将 ls 用于多个目录并与 wc 结合使用会更简洁一些:
ls /usr/bin /bin /usr/doc | wc -l
正如 Kent 指出的那样, find 可能是首选,因为它会忽略目录条目。如果您需要符号链接,请对其进行调整。
除非您想递归到其中的任何意外目录,否则需要 -maxdepth(如果您的 find 支持)。如果由于某种奇怪的原因不存在目录,也会丢弃 stderr。
查找 /usr/bin /bin /usr/doc -maxdepth 1 -type f 2>/dev/null | wc -l