如何从 md5deep 的输出中排除一些文件和目录?
How to exclude some files and directories from the output of md5deep?
我正在使用 md5deep 实用程序计算文件的哈希值,同时递归地挖掘目录结构。
它允许 运行 这样的命令 -
md5deep -r -l -j0 app
并给出这样的输出(所有底层 files/directories 的 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
选项)来提供一个文件中的文件列表names/directories,但是那些文件将被包括在内。但是,我正在寻找相反的方法,即从给定目录中的动态目录集中排除一些预定义的 files/directories 集(将来可以添加新的 directories/files)。
也欢迎使用正则表达式或一些 tool/utility 除了 md5deep 之外的解决方案,只要它符合我的目的。我觉得在没有前瞻的情况下,使用 grep 的正则表达式解决方案会很复杂。例如。需要以下正则表达式来匹配除 ABC
-
之外的任何字符串
^([^A]|A([^B]|B([^C]|$)|$)|$).*$
为什么不将 find
与 md5sum
一起使用:
find app -type f -exec md5sum {} \;
d41d8cd98f00b204e9800998ecf8427e app/tests/groups/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/components/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/behaviors/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/models/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/helpers/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/controllers/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/fixtures/empty
如果您需要排除某些目录,请使用选项 -path
,如果您需要排除文件名,请使用 -name
.
例如,如果要排除路径名中包含 models
的文件,请使用以下内容:
find app -type f ! -path "*models*" -exec md5sum {} \;
顺便说一句,如果您查看空文件,可以使用 -empty
选项:
find app -empty
我正在使用 md5deep 实用程序计算文件的哈希值,同时递归地挖掘目录结构。
它允许 运行 这样的命令 -
md5deep -r -l -j0 app
并给出这样的输出(所有底层 files/directories 的 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
选项)来提供一个文件中的文件列表names/directories,但是那些文件将被包括在内。但是,我正在寻找相反的方法,即从给定目录中的动态目录集中排除一些预定义的 files/directories 集(将来可以添加新的 directories/files)。
也欢迎使用正则表达式或一些 tool/utility 除了 md5deep 之外的解决方案,只要它符合我的目的。我觉得在没有前瞻的情况下,使用 grep 的正则表达式解决方案会很复杂。例如。需要以下正则表达式来匹配除 ABC
-
^([^A]|A([^B]|B([^C]|$)|$)|$).*$
为什么不将 find
与 md5sum
一起使用:
find app -type f -exec md5sum {} \;
d41d8cd98f00b204e9800998ecf8427e app/tests/groups/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/components/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/behaviors/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/models/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/helpers/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/cases/controllers/empty
d41d8cd98f00b204e9800998ecf8427e app/tests/fixtures/empty
如果您需要排除某些目录,请使用选项 -path
,如果您需要排除文件名,请使用 -name
.
例如,如果要排除路径名中包含 models
的文件,请使用以下内容:
find app -type f ! -path "*models*" -exec md5sum {} \;
顺便说一句,如果您查看空文件,可以使用 -empty
选项:
find app -empty