我正在尝试查找目录中的唯一文件数以及它的子目录这可能吗?
比如说有一个包含100个文件的目录。我如何计算该目录下的唯一文件数?
答案 0 :(得分:1)
假设您询问文件名,可以
要列出所有文件,您可以使用find
。通常find
打印每个结果的完整路径名,但由于您只想比较基本文件名,因此您必须自定义其输出:
find directoryName -type f -printf '%f\n'
这将打印每个基本文件名,每行一个。现在,您只能通过排序获取唯一的文件名,然后将共享名称的所有相邻条目折叠到单个条目中。带有sort
开关的-u
命令会为您执行此操作:
find directoryName -type f -printf '%f\n' | sort -u
如果您想获得每个唯一文件名的重复次数,那么只需使用sort
并使用uniq -c
来处理折叠和计数:
find directoryName -type f -printf '%f\n' | sort | uniq -c
请注意,上述解决方案会因包含换行符(\n
)字符的文件名而混淆。如果你有任何这样的文件名,你应该在find
手册中阅读关于空终止(而不是换行 - 终止)你的输出。
最后,如果您只是在寻找一个数字输出,请通过“wc -l”管理整个事件来计算它。
find directoryName -type f -printf '%f\n' | sort | uniq -c | wc -l