Nautilus 脚本比较两个文件的哈希值

Nautilus 脚本比较两个文件的哈希值

有时我需要检查两个文件是否相同。我尝试编写一个 bash 脚本来实现这一点,但我无法理解。

我在网上找到了下面的脚本,我将其放在 Nautilus 脚本文件夹中,当我右键单击文件并从右键单击上下文菜单中调用脚本时,它会打印文件的校验和。我如何改进它以获取第二个文件并判断它们是否相同?

#!/bin/bash
IFS=$'\n'
zenity --info --text "$(md5sum $1 | sed 's/ /\n/')"

答案1

这个怎么样:

#!/bin/bash
IFS=$'\n'

for file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
    result="${result}"$(md5sum "${file}")"\n"
done

zenity --info --text="${result}"

我从中学到https://help.ubuntu.com/community/NautilusScriptsHowtoNautilus 将选定文件的列表放在 NAUTILUS_SCRIPT_SELECTED_FILE_PATHS 变量中。它们由换行符分隔。因此,我将 IFS 变量设置为“换行符”,这样“for”循环就会在行上进行迭代,而不是像默认的那样在空格分隔的单词上进行迭代。对于每一行/文件,我都会对其运行 md5sum 并将结果附加到变量中。最后,使用 zenity 输出变量,就像您最初所做的那样。

这将仅显示任何选定文件的 md5sum(它也适用于超过 2 个文件),因此您可以直观地确定它们是否相同。您显然可以根据需要修改此脚本:

  • 如果选择了超过 2 个文件,则可能直接退出
  • 在脚本中进行 md5 比较,并根据结果仅输出“相同/不同”。

相关内容