6

我正在尝试对目录及其子目录中可以找到的所有 .jar 文件进行校验和。然后将带有校验和值的文件名打印到文件中。

这就是我所拥有的。

md5sum | find -name *.jar >result.txt

我正在尝试将两个我知道单独工作的命令连接在一起。

任何帮助表示赞赏。

4

3 回答 3

13

您可以使用类似这样的方法对每个文件执行命令:

find . -name "*.jar" -exec md5sum {} \; >result
于 2013-02-08T15:55:17.913 回答
2

这也将用于递归散列当前目录或子目录中的所有文件(感谢我的系统管理员!):

md5sum $(find . -name '*.jar') > result.txt

以上将在文件名前添加“./”(不包括路径)。

使用-exec来自 mux 的建议在文件名前加上“*”(同样,没有路径)。

列出的文件顺序在两者之间也有所不同,但我没有资格确切说明原因,因为我完全是 bash 脚本的菜鸟。

编辑:忘记上面关于前置和完整路径的内容,这是基于我在 HPC 上远程运行的经验。我刚刚使用 cygwin 在我的本地 Windows 机器上运行了我的系统管理员的建议,并获得了完整的路径,前面带有“*./”。我需要使用其他一些技巧来转储不一致的路径和前置,以使比较更容易。简而言之,YMMV。

于 2014-05-09T16:08:28.020 回答
0

您还可以将结果通过管道传输到xargs

find . -name "*.jar" | xargs md5sum > result.txt
于 2019-03-29T17:37:33.847 回答