Bir dizinde birkaç dosya var ve hepsinin benzersiz olup olmadığını kontrol etmek istiyorum. : Kolaylık olması açısından, bu reklam üç dosya var diyelim foo.txt
, bar.txt
ve baz.txt
. Bu döngüyü çalıştırırsam, hepsini birbirine karşı kontrol edeceğim:
$ 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
Ele almak istediğim yüzlerce dosya için bu oldukça okunmaz hale gelirdi; o dosyaları listelemek için daha iyi olurdu yapmak maçı, sonra listeyi hızlı bir şekilde bakmak ve dosyaları yalnızca kendilerini eşleşen olduğundan emin yapabilirsiniz. Manpage'den, -s
seçeneğin bunu başaracağını düşünürdüm:
$ 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
... ancak aslında farklı dosyaların tüm içeriğini de yazdırır. Bu davranışı bastırmak için herhangi bir yolu var, bu yüzden ben sadece yukarıdaki davranış olsun?
Alternatif olarak, bunu başarabilecek başka bir araç var mı?