![如何递归地为驱动器中的每个文件夹创建 md5 文件?](https://linux22.com/image/25074/%E5%A6%82%E4%BD%95%E9%80%92%E5%BD%92%E5%9C%B0%E4%B8%BA%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%AD%E7%9A%84%E6%AF%8F%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E5%88%9B%E5%BB%BA%20md5%20%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在寻找一个脚本,为驱动器 recursivley 内的每个文件夹创建一个 md5 校验和文件?
我的机器上确实有 md5deep 的副本,但我不太擅长编写 bash 脚本。
答案1
要获取特定目录下任何文件的 .md5 文件,可以使用以下脚本:
#!/bin/bash
if [ $# -ne 1 ] ; then
echo "Usage $0 [directory]"
exit 1
fi
find $1 -type f -print0 | while IFS= read -r -d $'\0' file; do
(
cd "$(dirname "$file")"
filename="$(basename "$file")"
md5sum "$filename" > "$filename".md5
)
done
在 中zsh
,可以使用一行命令对当前目录下的所有文件执行相同的操作(包括以点开头的文件):
for i in **/*(/D) ; do ( cd $i ; for j in *(.D) ; do md5sum $j > $j.md5 ; done ) ; done
答案2
当然是死灵术,但我知道我们有多爱 1 line-ers
#find / -type f -exec md5sum {} + > CheckSums
就我个人而言,我会使用 sha512sum,并限制为 /home 或其他东西,但如果你想要校验根,那就去吧。