How to calculate sha1 values of docx files in bash

From 清冽之泉
Jump to navigation Jump to search

保存这段代码为 calc_sha1_input.sh,再./calc_sha1_input.sh 23333运行,就会计算出 calc_sha1_input.sh 所在文件夹内所有 .docx 文件的 sha1 值,并输出结果为 23333.txt。calc_sha1_input.sh 中的 input 是提示你,这段脚本需要输入一个参数,用以指定结果的文件名前缀。这对于当别人给你发了两个重复文件看着大差不差,但又不确定是否重复时很有用,只需要分别计算 sha1 值,再进 excel 表格中用 if 函数一比较就能清楚知道哪两个文件是一模一样的了。代码来自 Kimi.ai。

#!/bin/bash

# 检查参数数量
if [ $# -ne 1 ]; then
    echo "Usage: $0 <prefix_for_result_file>"
    exit 1
fi

# 提取结果文件前缀
result_prefix="$1"

# 确保结果文件名以.txt结尾
if [[ "$result_prefix" != *.txt ]]; then
    result_file="${result_prefix}.txt"
else
    echo "Error: Result filename should not include the .txt extension."
    exit 1
fi

# 创建或清空指定的结果文件
> "$result_file"

# 遍历当前目录下的所有.docx文件
for file in *.docx; do
    # 检查文件是否存在
    if [ -f "$file" ]; then
        # 计算文件的SHA1哈希值
        sha1=$(sha1sum "$file" | awk '{print $1}')
        # 将哈希值和文件名写入指定的结果文件
        echo "$sha1 $file" >> "$result_file"
    fi
done

# 输出完成信息
echo "SHA1 hashes have been written to $result_file"