要在BASH中递归计算MD5,可以使用递归函数和md5sum命令。以下是一个示例代码:
#!/bin/bash
function calculate_md5 {
local file=$1
local md5=$(md5sum "$file" | awk '{print $1}')
echo "MD5 for $file: $md5"
if [ -d "$file" ]; then
# 如果是目录,则递归计算目录下的所有文件的MD5
for entry in "$file"/*; do
calculate_md5 "$entry"
done
fi
}
# 调用calculate_md5函数,并传入要计算MD5的文件或目录路径
calculate_md5 "/path/to/file_or_directory"
在上述代码中,我们定义了一个calculate_md5函数,它接受一个文件或目录路径作为参数。首先,它使用md5sum命令计算给定文件的MD5,并将结果存储在变量md5中。然后,它输出文件的路径和对应的MD5值。
如果给定的路径是一个目录,calculate_md5函数会进一步遍历该目录下的所有文件,并对每个文件调用calculate_md5函数。这样就可以递归计算整个目录结构下的所有文件的MD5。
你可以将代码中的"/path/to/file_or_directory"替换为实际的文件或目录路径来测试代码。