比较两个存档文件Bash Shell

时间:2014-12-03 21:57:11

标签: bash shell compare archive

我是Bash的新手,我需要帮助。

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

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

  

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

问题是我无法对输出进行任何成像。

1 个答案:

答案 0 :(得分:0)

试试这个:

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

启动这两个子进程(两个sort命令),它们的输出与文件描述符相关联。语法<(...)返回表示此文件描述符的文件名(类似/dev/fd/63)。所以最后,diff被调用了两个文件,当读取时,(似乎)包含两个进程的输出。

此方法适用于严格线性读取文件的程序。当然,寻找“文件”是不可能的。