diff 中具有两个相同文件的静默结果:如何显示它们?

diff 中具有两个相同文件的静默结果:如何显示它们?

当我设置-s参数时,diff也打印不同的文件。

diff -s $FIRST_FILE $SECOND_FILE

答案1

Unix 的理念是每项工作都有一个工具,而 shell 将它们粘合在一起。因此:一种用于比较的工具,一种用于获得所需输出格式的工具。

在这种情况下,输出格式非常简单,这部分可以直接使用 shell 完成。

要比较两个文件,如果您只关心它们是否具有相同的内容而不是列出差异,请使用cmp

if cmp -s -- "$FIRST_FILE" "$SECOND_FILE"; then
  printf '%s\n' "$FIRST_FILE = $SECOND_FILE"
fi

答案2

一种可能的解决方案可能是:

diff -s $FIRST_FILE $SECOND_FILE > /dev/null
if [ $? -eq 0 ]; then
    echo "The files are identical"
fi

注意:它更改了问题文本。

答案3

默认情况下,diff当给出相同的文件时,保持沉默;这是其行为唯一发生变化的方面-s。所以它总是比较文件,并输出差异; with-s它还会在文件相同时输出一条消息, without-s它根本不会提及相同的文件。

-q您可以通过组合和来获得我认为您正在寻找的行为-s-q指示diff仅指示文件不同(当文件不同时),而不详细说明差异。

这是一个例子:

$ echo 1 > a
$ echo 2 > b
$ echo 2 > c
$ diff -qs a b
Files a and b differ
$ diff -qs b c
Files b and c are identical

答案4

我在文件名两边加了引号,您还应该将文件名更改为小写。

diff "${FIRST_FILE}" "${SECOND_FILE}" > /dev/null && echo "Same"

相关内容