我想为目录中的所有文件创建一个md5校验和列表。
我想cat filename | md5sum > ouptput.txt
。我想一步一步对目录中的所有文件执行此操作。
任何帮助都会很棒。
我想为目录中的所有文件创建一个md5校验和列表。
我想cat filename | md5sum > ouptput.txt
。我想一步一步对目录中的所有文件执行此操作。
任何帮助都会很棒。
Answers:
您可以传递md5sum
多个文件名或bash扩展名:
$ md5sum * > checklist.chk # generates a list of checksums for any file that matches *
$ md5sum -c checklist.chk # runs through the list to check them
cron: OK
database.sqlite3: OK
fabfile.py: OK
fabfile.pyc: OK
manage.py: OK
nginx.conf: OK
uwsgi.ini: OK
如果您想花哨的话,可以使用诸如find
向下钻取和过滤文件之类的方法以及递归工作:
find -type f -exec md5sum "{}" + > checklist.chk
md5sum
中的文件,上面md5sum *
所说的...进入子目录级别,是一个目录
find -type f -exec md5sum '{}' +
和`find -type f -exec md5sum'{}'` 询问,我能够得到它。谢谢:)
openssl md5 * > checklist.txt
**
递归评估的外壳程序(例如zsh),则它甚至更简单:md5sum **/* 2>/dev/null
一个很好的校验和创建/验证程序是rash。它甚至创建与SFV兼容的文件,并对其进行检查。
它支持md4,md5,sha1,sha512,crc32等许多其他功能。
而且,它可以执行递归创建(-r选项),例如md5deep或sha1deep。
最后但并非最不重要的一点是,您可以设置校验和文件的输出格式。例如:
rhash --md5 -p '%h,%p\n' -r /home/
从/home
目录开始递归输出一个CSV文件,其中包括文件的完整路径。
我发现,即使-e选项通过在名称中插入crc32 sum来重命名文件,也非常有用。
您可以在PhoenixNL72示例中使用“ rhash”更改“ md5sum”。
这是两个更广泛的示例:
在没有目录的每个目录中创建一个md5文件,并使用绝对路径:
find "$PWD" -type d | sort | while read dir; do [ ! -f "${dir}"/@md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 already present" ; [ ! -f "${dir}"/@md5Sum.md5 ] && md5sum "${dir}"/* > "${dir}"/@md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5;done
在每个没有一个文件夹的文件夹中创建一个md5文件:没有路径,只有文件名:
find "$PWD" -type d | sort | while read dir; do cd "${dir}"; [ ! -f @md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 allready present" ; [ ! -f @md5Sum.md5 ] && md5sum * > @md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5 ;done
1和2之间的区别是文件在结果md5文件中的显示方式。
这些命令执行以下操作:
整个脚本的输出可以重定向到文件(.....; done> test.log)或通过管道传输到另一个程序(如grep)。输出只会告诉您跳过了哪些目录以及已处理了哪些目录。
运行成功后,您将在当前目录的每个子目录中以@ md5Sum.md5文件结尾
我将文件命名为@ md5Sum.md5,这样它将在samba共享的目录顶部列出。
可以通过以下命令来验证所有@ md5Sum.md5文件:
find "$PWD" -name @md5Sum.md5 | sort | while read file; do cd "${file%/*}"; md5sum -c @md5Sum.md5; done > checklog.txt
之后,您可以使用grep -v OK grep checklog.txt,以获取所有不同文件的列表。
要在特定目录中重新生成@ md5Sum.md5,例如在更改或添加文件时,请删除@ md5Sum.md5文件或重命名该文件,然后再次运行generate命令。