如果文件已被更新,更改或删除,我需要比较两个tar.gz文件的内容。
建议的命令 Diff between two .tar.gz file lists in liunx如果我可以将结果作为列表或我可以迭代并运行正则表达式,那么会有所帮助。
diff <(tar -tvf 1.tar.gz | sort) <(tar -tvf 2.tar.gz | sort)
我尝试使用子进程,但我不确定如何翻译“&lt;”我学到的是tar和sort的输出重定向。我尝试过像
这样的事情file1 = subprocess.Popen(('tar', '-tvf', 1.tar.gz), stdout=subprocess.PIPE)
results_1 = file1.communicate()[0]
file2 = subprocess.Popen(('tar', '-tvf', 2.tar.gz), stdout=subprocess.PIPE)
results_2 = file1.communicate()[0]
diff = subprocess.Popen(['diff',results_1,results_2], stdout=subprocess.PIPE)
开始引用前两个命令中的一个stdouts并以
结束:File name too long
我还尝试使用(显然)不可原谅的shell = True运行整个命令,但这给了我:
/bin/sh: -c: line 0: syntax error near unexpected token `('
我想使用python 2.7和/或不使用异国情调的外部库,但如果需要python 3.X或完全不同的方式来检查两个tar文件中的文件是否为任何人所知,我会喜欢听啊:)