我想获取find的输出并能够将它们与diff进行比较,以查看文件是否相同。例如,假设我找到一些带有find的文件:
find . -name '*.bar'
./desktop/filename.bar
./otherdirectory/filename2.bar
./otherotherdirectory/filename3.bar
我希望能够做到
diff ./desktop/filename.bar ./otherdirectory/filename2.bar
和
diff ./desktop/filename.bar ./otherotherdirectory/filename3.bar
找到所有文件对的等等(至少看文件是否相同),而不必为每对编写命令行。
find -exec选项不起作用,因为它会在每次结果时用{}替换{}
find . -name '*.bar' -exec diff {} \;
我也尝试将find的输出管道化为diff,但我也无法使其工作(虽然我还是新手并且可能做错了):
find . -name '*.bar' | diff
这可能不太可行,但我不想为find找到的每一对文件写一个diff命令。
答案 0 :(得分:1)
嗯,解决方案对我有用,如下所示
找到。 -name' * .bar' | xargs echo | xargs diff答案 1 :(得分:0)
您可以使用diff
并比较校验和,而不是尝试sha256sum
所有可能的文件对来确定重复项:
find . -name '*.bar' -type f -exec sha256sum {} \;
相同的文件将具有相同的校验和。您可以将上述命令的输出传递给sort
,以便按校验和对结果进行排序:
find . -name '*.bar' -type f -exec sha256sum {} \; | sort