将目录中所有文件的 MD5 哈希返回到文件名为 [重复] 的 .txt 文件

将目录中所有文件的 MD5 哈希返回到文件名为 [重复] 的 .txt 文件

我有一个图片目录。

我需要该目录中每个文件的 MD5 哈希值以及放入文档中的文件名称.txt。稍后将读取此文件以同时引用 MD5 和文件名。

笔记:
我希望它只提取我指定的所有目录文件。
我试过tar,但find似乎找不到好的解决方案……

这是一个目录示例:

/Desktop/testing
RandomFilename1.png
RandomFilename2.png
RandomFilename3.png

输出.txt为:

RandomFilename1,da39a3ee5e6b4b0d3255bfef95601890afd80709
RandomFilename2,da39a3ee5e6b4b0d3255bfef95601890afd80709
RandomFilename3,da39a3ee5e6b4b0d3255bfef95601890afd80709

我在网上找遍了所有地方,但都没有找到。
这将在 Linux 终端上进行。

答案1

您可以使用以下bash命令:

for file in testing/*; do md5sum $file; done > res.txt

当然,你必须调整的目标目录res.txt
结果可能类似于此:

8b1500ea6fe42927891fd1831bb955ba  testing/Pic1.gif
73f3222889a14411a3b78675ed0bc269  testing/Pic2.gif
c5b18ef1ea1346f13f668a7ead4e4c92  testing/Pic3.gif

因此 MD5 哈希值后面是文件名和路径。

答案2

对于您想要执行的操作,执行md5sum并使用sedawk转换输出

md5sum *.png | sed 's/^\([0-9a-f]\+\) \+\(.\+\)/\2,\1/' >images.md5sums
md5sum *.png | awk '{print $2","$1}' >image.md5sums

但是,的纯文本输出md5sumhash filename并且等同于您的格式。使用该标准md5sum输出格式通常更方便,因为您可以直接使用它来md5sum -c检查文件的哈希值(在复制或网络传输之后)。其他一些实用程序可能也需要这种特定格式。

答案3

我根据定义的参数编写了一个小脚本:

cd /home/username/Desktop/testing
for F in *
do
    echo "$F", $(md5sum "$F" | sed -e 's/'"$F"'//g')
done

示例输出:

1.txt, c8ef7cca2ceb3f878921b1ff163dbf91
demo, e9470a3c74b32036fa148dfabce70929
File with spaces.txt, c691b3d2fc2678839a9c141b6ee1524e
line.cpp, e0732d2781c6b2b57d413f79f9c1fd28
test, 3734699610e8d322767cf65f90ed43ce
test.cpp, afbe5b90cf002e1eb6df4cf98dfe4c0e

笔记:此脚本将在终端中显示输出。要将其保存在文件中,您可以> 1.txt在执行文件时使用,例如:

./test.sh > 1.txt

相关内容