我是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
问题是我无法对输出进行任何成像。
答案 0 :(得分:0)
试试这个:
diff <(sort -u list1.txt) <(sort -u list2.txt)
启动这两个子进程(两个sort
命令),它们的输出与文件描述符相关联。语法<(...)
返回表示此文件描述符的文件名(类似/dev/fd/63
)。所以最后,diff
被调用了两个文件,当读取时,(似乎)包含两个进程的输出。
此方法适用于严格线性读取文件的程序。当然,寻找“文件”是不可能的。