我正在尝试对目录及其子目录中可以找到的所有 .jar 文件进行校验和。然后将带有校验和值的文件名打印到文件中。
这就是我所拥有的。
md5sum | find -name *.jar >result.txt
我正在尝试将两个我知道单独工作的命令连接在一起。
任何帮助表示赞赏。
您可以使用类似这样的方法对每个文件执行命令:
find . -name "*.jar" -exec md5sum {} \; >result
这也将用于递归散列当前目录或子目录中的所有文件(感谢我的系统管理员!):
md5sum $(find . -name '*.jar') > result.txt
以上将在文件名前添加“./”(不包括路径)。
使用-exec
来自 mux 的建议在文件名前加上“*”(同样,没有路径)。
列出的文件顺序在两者之间也有所不同,但我没有资格确切说明原因,因为我完全是 bash 脚本的菜鸟。
编辑:忘记上面关于前置和完整路径的内容,这是基于我在 HPC 上远程运行的经验。我刚刚使用 cygwin 在我的本地 Windows 机器上运行了我的系统管理员的建议,并获得了完整的路径,前面带有“*./”。我需要使用其他一些技巧来转储不一致的路径和前置,以使比较更容易。简而言之,YMMV。
您还可以将结果通过管道传输到xargs
:
find . -name "*.jar" | xargs md5sum > result.txt