有时我需要检查两个文件是否相同。我尝试编写一个 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 比较,并根据结果仅输出“相同/不同”。