ディレクトリに多数のファイルがあり、それらがすべて一意であることを確認したい。簡単にするために、3つのファイルfoo.txt
があるbar.txt
としbaz.txt
ます。このループを実行すると、それらすべてを互いにチェックします。
$ for f in ./*; do for i in ./*; do diff -q "$f" "$i"; done; done
Files bar.txt and baz.txt differ
Files bar.txt and foo.txt differ
Files baz.txt and bar.txt differ
Files baz.txt and foo.txt differ
Files foo.txt and bar.txt differ
Files foo.txt and baz.txt differ
私が処理したい数百のファイルでは、これはかなり読みにくくなります。ファイル一覧表示する方が良いだろうやる試合をして、私はすぐにリストの上に見て、ファイルは自分自身だけに一致していることを確認することができます。マンページから、私は-s
オプションがこれを達成すると思っていたでしょう:
$ for f in ./*; do for i in ./*; do diff -s "$f" "$i"; done; done
Files bar.txt and bar.txt are identical
Files baz.txt and baz.txt are identical
Files foo.txt and foo.txt are identical
...しかし、実際には、異なるファイルの内容全体も印刷します。この動作を抑制する方法はありますか?そのため、上記の動作しか得られませんか?
あるいは、これを達成できる他のツールはありますか?