【发布时间】:2017-03-07 12:54:09
【问题描述】:
我正在使用 md5deep 实用程序来计算文件的哈希值,同时递归地挖掘目录结构。
它允许像这样运行命令 -
md5deep -r -l -j0 app
并给出这样的输出(所有底层文件/目录的 md5 哈希的递归列表,考虑到它们的内容) -
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/controllers/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/models/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/components/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/helpers/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/behaviors/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/groups/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/fixtures/empty
我将进一步对结果进行md5sum 以生成整个代码库的哈希 -
md5deep -r -l -j0 app | md5sum
输出 -
86df91fc29f2891ff0aa7aaa4bd13730 -
现在,在计算最终 md5sum 时,我一直坚持不考虑某些路径(文件和目录)。例如。如果我想排除这两条路径 - app/tests/groups/empty 和 app/tests/fixtures/empty。
md5deep documentation 提供了一个选项(-f 选项)来提供文件中的文件名/目录列表,但这些文件将被包括在内。但是,我正在寻找相反的结果,即从给定目录内的动态目录集中(将来可能添加新目录/文件)中排除一些预定义的文件/目录集。
也欢迎使用正则表达式或 md5deep 以外的某些工具/实用程序的解决方案,只要它符合我的目的。在没有前瞻的情况下,我觉得使用 grep 的正则表达式解决方案会很复杂。例如。需要以下正则表达式来匹配除ABC 之外的任何字符串 -
^([^A]|A([^B]|B([^C]|$)|$)|$).*$
【问题讨论】: