我有一个图片目录。
我需要该目录中每个文件的 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
并使用sed
或awk
转换输出
md5sum *.png | sed 's/^\([0-9a-f]\+\) \+\(.\+\)/\2,\1/' >images.md5sums
md5sum *.png | awk '{print $2","$1}' >image.md5sums
但是,的纯文本输出md5sum
是hash 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