Apakah ada alat Linux / Unix yang menemukan semua file dalam satu direktori tidak hadir di direktori lain? Pada dasarnya saya mencari diff yang berfungsi pada output ls.
Naskah pendek dan manis juga dihargai.
Apakah ada alat Linux / Unix yang menemukan semua file dalam satu direktori tidak hadir di direktori lain? Pada dasarnya saya mencari diff yang berfungsi pada output ls.
Naskah pendek dan manis juga dihargai.
Jawaban:
diff
sudah melakukan ini:
diff dir1 dir2
Contoh output:
Only in dir1: some_file.txt
Only in dir1: some_other_file.txt
Only in dir2: third_file.txt
Pesta:
diff <(cd dir1; ls) <(cd dir2; ls)
Bandingkan hanya nama file - bukan isi file.
ls
, gunakan find
saja!
Seperti yang dikatakan orang di sini, Anda dapat menggunakan DIFF dalam berbagai variasi penggunaan. Atau Anda hanya menggunakan dirdiff
, yang dimaksudkan untuk apa yang Anda coba! :-)
Tetapi jika Anda ingin menyimpan beberapa direktori dalam sinkronisasi maka Anda benar-benar harus melihatnya rsync
.
Salam
Jika Anda ingin melakukan ini melalui semua sub direktori juga, cara yang baik untuk melakukannya adalah:
diff --brief -r dir1/ dir2/
Saya lebih suka menggunakan brief, tetapi Anda bisa mengabaikannya jika mau.
Dennis Williamson punya jawaban yang bagus , tetapi saya perlu melakukan ini secara rekursif. GNU findutils 4.7.0 tidak mengurutkan outputnya, jadi inilah yang saya gunakan
diff <(cd $dir1; find | sort) <(cd $dir2; find | sort)
Untuk melakukan ini hanya satu cara, dan menghasilkan daftar file, saya menggunakan ini:
diff <(cd $dir1; find | sort) <(cd $dir2; find | sort) \
| grep '< ./' | sed "s,< ./,$dir1/,"
Agar ini berfungsi dengan baik, $ dir1 atau $ dir2 tidak boleh menyertakan trailing slash.
diff dir1 dir2 | grep "Only"