比较BashShell中的两个归档文件

比较BashShell中的两个归档文件,bash,shell,compare,archive,Bash,Shell,Compare,Archive,我是Bash的新手,需要帮助 我需要创建一个shell脚本来比较两个gzip存档。对于每个归档文件中的每个文件或目录(甚至在归档子目录中),脚本应验证另一个归档文件中是否存在同名的文件/目录。如果缺少目录,请忽略此目录中缺少的文件或子目录。脚本应列出其他档案中没有匹配等效文件的所有文件的名称 比较归档文件arch1.tar.gz和archive2.tar.gz并在archive.tar.gz和c.txt v arch2.tar.gz中查找不同文件aa/a.txt、bb/b.txt时的脚本输出:

我是Bash的新手,需要帮助

我需要创建一个shell脚本来比较两个gzip存档。对于每个归档文件中的每个文件或目录(甚至在归档子目录中),脚本应验证另一个归档文件中是否存在同名的文件/目录。如果缺少目录,请忽略此目录中缺少的文件或子目录。脚本应列出其他档案中没有匹配等效文件的所有文件的名称

比较归档文件arch1.tar.gz和archive2.tar.gz并在archive.tar.gz和c.txt v arch2.tar.gz中查找不同文件aa/a.txt、bb/b.txt时的脚本输出:

arch1.tar.gz:aa/a.txt

arch1.tar.gz:bb/b.txt

arch2.tar.gz:c.txt

以下是我所拥有的:

#!/bin/bash
$1
$2

tar tf $1>> list1.txt
tar tf $2>> list2.txt
comm -23 <(sort list1.txt -o list1.txt | uniq) <(sort list2.txt -o list2.txt| uniq)
diff list1.txt list2.txt>>contestboth
#/bin/bash
$1
$2
tar tf$1>>list1.txt
tar tf$2>>list2.txt
通讯-23
问题是我无法为输出生成任何图像。

尝试以下方法:

diff <(sort -u list1.txt) <(sort -u list2.txt)

diff如果使用
-o
进行排序,则它不会写入标准输出,因此那些
|uniq
管道可能无法工作。此外,前两行
$1
$2
正试图将脚本的第一个和第二个参数作为命令执行,这可能不是您想要的(如果脚本中甚至有参数,但它们似乎不是)。话虽如此,我不明白你的最后一句话是什么意思。使用选项
-o
与将输出管道连接到
uniq
没有任何意义。您可能只需要使用已经具备uniq功能的
sort-u
。您可能需要添加此命令工作原理的说明。就目前而言,这不是一个很好的答案。是的,我解释了一点。