Dapatkah salah satu dari utilitas diff / grep melakukan "file grep"? [duplikat]

1

Kemungkinan Gandakan:
Pencari file duplikat

... untuk melanjutkan judulnya, pada dasarnya yang saya inginkan adalah saya memberikan file kepadanya, dan program berjalan melalui seluruh direktori proyek dan mencari apakah ada file (semuanya berbeda nama, tentu saja :) yang biner sama dengan yang pertama ...

Memang, diff, tapi saya tidak ingin melalui direktori proyek sendiri, karena ada cukup banyak dari mereka.

Rook
sumber
2
Saya kira Anda bisa skrip beberapa hal berbasis checksum cepat ... atau duplikat mencari file perangkat lunak ... OS?
Journeyman Geek
@ Paul - Tidak, tidak sama dengan pertanyaan yang ditautkan. File saya memiliki nama yang berbeda, dan jika Anda melakukan referensi silang berdasarkan ukuran, banyak file non-duplikat lainnya akan disertakan juga (semuanya sekitar 50-100 kB).
Rook
@ Paul - Ketika saya keberatan dengan duplikat-tutup, saya tidak mengamati setiap jawaban yang diberikan dalam pertanyaan itu. Saya melihat pertanyaan, karena alasan Anda untuk menutup adalah "pertanyaan rangkap", dan menolaknya. Kalau tidak, kita mungkin mulai menutup pertanyaan berbeda yang memiliki jawaban bersama serta duplikat.
Rook
Komentar ini tidak ada gunanya jadi saya telah menghapus milik saya. Pertanyaannya telah diajukan pada meta meta.superuser.com/questions/3771/…
Paul

Jawaban:

2

Maaf, tidak melihat tag OS sebelum memposting. Tetapi akan bekerja pada Windows dengan Cygwin atau UnxUtils juga.

Perintah berikut menghitung checksum MD5 untuk semua file di direktori proyek dan menampilkan mereka dengan checksum yang sama sebagai file referensi:

find /path/to/project -type f -exec md5sum {} \; | grep $( md5sum /path/to/reference/file | cut -c1-32 ) | cut -c35-

Itu cut perintah digunakan untuk mengekstrak checksum 32 karakter ( -c1-32 ) dan nama file (-c35- ) dari output md5sum.

Daniel Beck
sumber
Saya memiliki beberapa port UnxUtils untuk windows, saya akan mencoba pendekatan ini. Terima kasih!
Rook
@ldigas UnxUtils aku s pelabuhan. Semoga berhasil! Jika Anda tidak memiliki bash atau shell serupa, hubungi md5sum /path/to/reference/file secara terpisah dan menggunakan checksum yang dikembalikan sebagai argumen untuk grep.
Daniel Beck
Tidak, ini adalah port UnxUtils (begitulah kata mereka). Itu disebut UnitKitTiny ... tidak tahu dari mana saya mendapatkannya.
Rook
@ldigas Bagus, tidak tahu tentang itu. UnixKitTiny sekalipun. Harus memeriksanya.
Daniel Beck
0

Ini berfungsi di Ubuntu 11.10:

#!/bin/bash
IFS="
"
for file in $(find $2 -type f)
do
    diff -s "$1" "$file" | grep "identical$"
done

Itu harus bekerja pada distro dengan bash, find dan diff.

$ ./recursive_diff.sh 2.gif Pictures/
Files 2.gif and Pictures/qzhm4k.gif are identical
sml
sumber
Maaf, lupa menambahkannya. Windows XP di sini.
Rook