เครื่องมือเปรียบเทียบไฟล์และไดเรกทอรี


149

ฉันกำลังมองหาสิ่งที่จะเปรียบเทียบไดเรกทอรีและไฟล์เช่น Beyond Compare สำหรับ Windows

ส่วนใหญ่ใช้สำหรับการควบคุมแหล่งข้อมูล แต่ฉันจำเป็นต้องใช้สำหรับการปรับใช้ด้วย


คุณต้องการเพียงแค่รายการไฟล์หรือเนื้อหาจริงของแต่ละไฟล์?
Martin Ueding

ฉันต้องการรายชื่อไฟล์และถ้าเป็นไปได้เนื้อหาที่แตกต่างระหว่างไฟล์ที่มีพา ธ เดียวกัน
isoman

2
มันจะมีประโยชน์ถ้าเครื่องมือ GUI ที่ช่วยให้โฟลเดอร์ที่หลบซ่อนตัวและไฟล์ที่เหมือนกัน การทำเช่นนี้จะทำให้การจดจ่อกับโฟลเดอร์และไฟล์แปลก ๆ ง่ายขึ้น ไม่มีใครรู้ว่าเครื่องมือที่รองรับคุณสมบัตินี้หรือไม่?
JJD

มีลักษณะที่เป็นอันหนึ่งอันเดียวกัน นอกเหนือจากการเปรียบเทียบ "ร้านค้าครบวงจรทำทุกอย่าง" ในขณะที่ความพร้อมเพรียงมุ่งเน้นไปที่การจัดการทราเวิร์สทรีรักษาสถานะและการเผยแพร่การเปลี่ยนแปลงครอบคลุมการเปรียบเทียบคุณสมบัติโดยการมอบสิ่งต่าง ๆ เช่น diff, 3-way ผสาน ฯลฯ โปรแกรมที่ชื่นชอบทำงานในระดับไฟล์ พร้อมเพรียงเป็นซอฟต์แวร์ฟรีที่แข็งแกร่งและสมบูรณ์มากสามารถตรวจจับและประสานต้นไม้ขนาดใหญ่ได้อย่างรวดเร็วผ่านเครือข่ายระหว่างระบบปฏิบัติการที่แตกต่างกัน ฯลฯ อ่านเอกสารก่อนโดยเฉพาะบน Windows
Stéphane Gourichon

emacs มีเครื่องมือเปรียบเทียบไดเรกทอรี เช่นเดียวกับทุกสิ่งที่ emacs นั้น eye eye ก็คือ "eye eye แม้หมายถึงอะไร" แต่มันแสดงให้เห็นถึงความช่วยเหลือตามบริบทเกี่ยวกับกุญแจช่วยให้มีการกดปุ่มซ้ำ ๆ ไม่กี่การวิเคราะห์ซ้ำ recursive, ซ่อนไฟล์ที่เหมือนกันหรือแม้กระทั่งย่อย ความแตกต่างที่เข้ารหัสด้วยตัวเลือกต่าง ๆ ผสานโต้ตอบเผยแพร่หรือทำการแก้ไขโดยพลการบนไฟล์ได้อย่างง่ายดายไปที่ไฟล์ถัดไปหรือ dir ถัดไปติดตามสถานะด้วยสิ่งอำนวยความสะดวกการแก้ไขตามปกติทั้งหมด
Stéphane Gourichon

คำตอบ:


175

meldติดตั้ง meld

Meld เป็นเครื่องมือที่สามารถเปรียบเทียบและรวมไฟล์และไดเรกทอรี มันเป็นแบบอะนาล็อก GUI กับเครื่องมือมาตรฐานdiff ติดตั้ง diffutilsและpatch ติดตั้งแพทช์บรรทัดคำสั่ง (ดูต่างคนและคนที่แพทช์สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเหล่านั้น)

ป้อนคำอธิบายรูปภาพที่นี่

นอกจากนี้ระบบควบคุมแหล่งข้อมูลจำนวนมาก (เช่นbzr ติดตั้ง bzr-gtkหรือgit ติดตั้ง git) มีความสามารถในการสร้างความแตกต่างระหว่างเวอร์ชัน


2
Meld เป็นที่น่าอัศจรรย์ ฉันใช้มันเป็นแหล่งการควบคุมที่แตกต่างกัน
Matt Joiner

12
ลองใช้กับโฟลเดอร์ที่ใหญ่กว่า - 4 GB, 2000 ไฟล์ การทำงานของ meld เป็นไปตามที่ต้องการ แต่สำหรับโฟลเดอร์นี้รวมกันช้ามากและ UI ไม่ตอบสนอง (บล็อก) ใช้ rsync ทันที
geekQ

1
ยังใช้งานได้ดีในการเปรียบเทียบไฟล์ข้อความแบบเคียงข้างกันหรือแม้กระทั่งคัดลอกข้อมูลวาง อินเทอร์เฟซที่ดีที่สุดที่ฉันเคยเห็น!
Stefan Rogin

@geekQ เป็นทางเลือกที่รวดเร็วสามารถจัดการโฟลเดอร์ขนาดใหญ่ได้ตามที่คุณต้องการในทันทีดูbeyond compareด้านล่าง ดีกว่า meld imho
phil294

Meld ล้มเหลวทุกครั้งที่ฉันต้องการเลือกโฟลเดอร์: / ฉันมีเวอร์ชั่นใหม่ล่าสุดในพื้นที่เก็บข้อมูลการแจกจ่ายของฉัน (Ubuntu 14.04)
Youda008

44

ต่างเป็นเพื่อนของคุณ

diff -ur path1 path2

สิ่งนี้จะเปรียบเทียบไฟล์ทั้งหมดที่มีร่วมกันระหว่าง path1 และ path2

หากคุณเปลี่ยน-urเป็น-urNแล้วจะแสดงเนื้อหาของไฟล์ที่มีอยู่ในหนึ่งในพา ธ เท่านั้น


1
ติดตั้งcolordiffและใช้แล้วcolordiff -ur path1 path2
warvariuc

ไม่ทำงานใน cygwin
Tomáš Zato

22

'Beyond Compare' มีให้สำหรับ Linux เช่นกัน

ตรวจสอบ URL การดาวน์โหลดของพวกเขา: http://www.scootersoftware.com/download.php


Beyond Compare มีประโยชน์อย่างยิ่งเมื่อทำการ ssh (ด้วยคีย์หรือรหัสผ่าน) กับรีโมตโฮสต์และเปรียบเทียบกับสำเนาโลคัล
brianlmerritt

13

ใช้diffคำสั่ง:

diff -u file1 file2

diff -uเลือกรูปแบบที่มีบริบทไม่กี่บรรทัด ล้วนdiff file1 file2แสดงรายการบรรทัดที่แตกต่างเท่านั้น มีตัวเลือกเพิ่มเติมมากมายในการควบคุมรูปแบบเอาต์พุตละเว้นความแตกต่างของช่องว่างเท่านั้นเป็นต้น

หากคุณต้องการเขียนผลลัพธ์ไปยังไฟล์ให้เปลี่ยนเส้นทาง:

diff -u file1 file2 >file1-file2.diff

12

ผู้บัญชาการ Gnomeติดตั้ง Gnome Commander

อินเทอร์เฟซอาจไม่เซ็กซี่จริง แต่มันมีประสิทธิภาพมาก

ข้อความแสดงแทน

และถ้าคุณคุ้นเคยกับผู้บัญชาการคนอื่น (เช่นนอร์ตันหรือคนที่ชอบ) คุณจะไม่หลงทาง


1
ฉันไม่ได้ใช้มันเพื่อเปรียบเทียบ 2 ไฟล์ แต่ฉันใช้มันเพื่อบอกฉันว่าไฟล์ใดแตกต่างกันในขณะที่เปรียบเทียบกับไดเรกทอรี สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อจัดเรียงภาพถ่าย ;-)
Huygens

10

เครื่องมือบรรทัดคำสั่ง

แรงบันดาลใจจากรายการบล็อกนี้

diff

รายการไฟล์ที่แตกต่าง:

diff -qr folder1 folder2

รายชื่อยังเนื้อหา:

diff -Naur folder1 folder2

rsync

หากทั้งสองไดเรกทอรีไม่ได้อยู่ในเครื่องเดียวกันrsyncอาจเป็นทางออกที่ง่ายที่สุด โดยทั่วไปrsyncจะใช้เพื่อซิงค์ไดเรกทอรี แต่คุณสามารถเรียกใช้ในโหมด verbose และ dry ดังนั้นจะแสดงรายการไฟล์ที่จะต้องเปลี่ยนเท่านั้น

rsync -rvnc --delete folder1 server:/path/to/folder2

คุณสามารถ ommit cหากคุณต้องการเปรียบเทียบไฟล์ตามเวลาและขนาดไฟล์เพื่อเร่งความเร็วทุกอย่าง:

rsync -rvn --delete folder1 server:/path/to/folder2

9

Krusaderติดตั้ง krusader

Krusader เป็นเครื่องมือฟรี (มีให้ใน Software Center) ที่แสดงเนื้อหาของโฟลเดอร์โดยเปรียบเทียบและคุณสามารถซิงโครไนซ์กับตัวเลือกต่าง ๆ มากมาย คุณสามารถกรองได้ในขณะที่ทำการซิงโครไนซ์และเปรียบเทียบ

Krusader

ในการเปรียบเทียบเนื้อหาไฟล์คุณเพียงทำเครื่องหมายสองไฟล์ให้เลือก "file"> "เปรียบเทียบเนื้อหา" และเปรียบเทียบด้วยตัวอักษรตามตัวอักษร เครื่องมือเปรียบเทียบเริ่มต้นที่ใช้โดย krusader เป็นเครื่องมือ KDE เริ่มต้น " Kompare " คุณสามารถตั้งค่า krusader ให้ใช้เครื่องมือเปรียบเทียบอื่น ๆ - เช่นหนึ่งในตัวอย่างข้างต้น

นี่เป็นทางออกที่สมบูรณ์แบบที่สุดที่ฉันเคยพบและสะดวกมาก และรองรับฟังก์ชั่น keybindungs ​​ทั้งหมดที่ใช้โดยผู้บัญชาการเที่ยงคืน (ไวยากรณ์ผู้บัญชาการ norton)


คุณยังสามารถใช้ "เครื่องมือ -> ทำข้อมูลไดเรกทอรีให้ตรงกัน" เพื่อรับมุมมองการเปลี่ยนแปลงไฟล์แบบเรียกซ้ำของพาเนลไดเร็กทอรีสองรายการ
Angelos Pikoulas

Unfortuately Synchronizer ใน Krusader เป็น unmaintained: bugs.kde.org/show_bug.cgi?id=270150#c7 มีทางเลือกอื่นที่ได้รับการดูแลอย่างแข็งขันหรือไม่?
rubo77

1
@ rubo77: ข้อผิดพลาดนี้ได้รับการแก้ไขในระหว่างนี้
mivk

9

KDiff3 ติดตั้ง kdiff3

เป็นฟรอนต์เอนด์แบบกราฟิกที่แตกต่างกันสำหรับผู้ใช้ KDE (หรือถ้าคุณไม่ใช้แอพ Qt)

kdiff3

นอกจากนี้ยังมีdirdiff ติดตั้ง dirdiffสำหรับไดเรกทอรี



4

พร้อมเพรียงเป็นเครื่องมือซิงโครไนซ์ไฟล์ที่รวดเร็วที่ใช้อัลกอริทึม rsync และช่วยให้คุณดูตัวอย่างความแตกต่างก่อนที่จะอัปเดตระหว่าง 2 ตำแหน่งไม่ว่าจะอยู่ในระยะไกลหรือในพื้นที่


4

ฉันเรียนรู้เกี่ยวกับแฮชดีพเมื่อสองสัปดาห์ที่แล้ว และมันก็มีข้อดีที่แข็งแกร่ง:

  • ในทางตรงกันข้ามmeldมันทำงานได้ดีสำหรับโฟลเดอร์ที่มีขนาดใหญ่มาก ในกรณีmeldที่ช้ามากและ UI ไม่ตอบสนอง (ถูกบล็อค) hashdeep จะทำงานด้วยความเร็วคงที่
  • ตรงกันข้ามกับrsynchashdeep ตรวจพบไฟล์ที่ถูกย้าย - ไฟล์ที่มีเนื้อหาเดียวกันเพียงแค่อยู่ในไดเรกทอรีอื่น

การส่งออก verbose เป็นเช่น:

...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG

hashdeep: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 6233
Files partially matched: 0
            Files moved: 3695
        New files found: 19257
  Known files not found: 4713

4

วิธีที่ดีในการเปรียบเทียบนี้คือใช้ " find " กับ " md5sum " จากนั้นเป็น " diff "

ตัวอย่าง:

ใช้ find เพื่อแสดงรายการไฟล์ทั้งหมดในไดเรกทอรีจากนั้นคำนวณ md5 hash สำหรับแต่ละไฟล์และไปป์ที่ไฟล์:

$find /dir1/ -type f -exec md5sum {} \; > dir1.txt

ทำโพรซีเดอร์เดียวกันกับไดเร็กทอรีอื่น:

$find /dir2/ -type f -exec md5sum {} \; > dir2.txt

จากนั้นเปรียบเทียบผลลัพธ์สองไฟล์ด้วย "diff":

$diff dir1.txt dir2.txt

กลยุทธ์นี้มีประโยชน์มากเมื่อเปรียบเทียบสองไดเรกทอรีที่ไม่ได้อยู่ในเครื่องเดียวกันและคุณต้องตรวจสอบให้แน่ใจว่าไฟล์มีความเท่าเทียมกันในทั้งสองไดเรกทอรี

อีกวิธีที่ดีในการทำงานคือการใช้คอมไพล์

git diff --no-index dir1/ dir2/

ด้วยความเคารพ!


3

ลองFreeFileSyncด้วย มันมีอินเตอร์เฟซที่ดีความเร็วในการเปรียบเทียบที่ยอมรับได้การกรองผลการเปรียบเทียบที่ดีวิธีการซิงค์ที่แตกต่างกัน มันมาพร้อมกับเครื่องมือตรวจสอบโฟลเดอร์ (RealTimeSync) ที่สามารถเรียกใช้ FreeFileSync (จริง ๆ แล้วคำสั่งหรือสคริปต์) เมื่อโฟลเดอร์ (หรือโฟลเดอร์) หรือโฟลเดอร์เฉพาะนั้นเปลี่ยนแปลงหรือเปลี่ยนแปลงไฟล์ภายใน ลองทำดูแล้วคุ้มค่าจริงๆ

ข้อมูลเพิ่มเติมเกี่ยวกับที่นี่หรือที่นี่ที่คุณมีPPAเช่นกัน

จากหน้าคุณสมบัติสำคัญ:

เปรียบเทียบไฟล์ (bytewise หรือตามวันที่) และทำให้ข้อมูลตรงกัน

ไม่มีข้อ จำกัด : สามารถซิงโครไนซ์ไฟล์ได้จำนวนหนึ่ง

รองรับ Unicode

รองรับเครือข่าย

การสนับสนุนชื่อไฟล์ที่มีความยาวมากในตัว (มากกว่า MAX_PATH = 260 ตัวอักษร)

ฐานข้อมูลการประสานสำหรับการเผยแพร่ไฟล์ที่ถูกลบและการตรวจสอบความขัดแย้ง

รองรับการจับคู่หลาย ๆ โฟลเดอร์ด้วยการกำหนดค่าที่แตกต่างกัน

สนับสนุนอย่างเต็มที่สำหรับลิงค์สัญลักษณ์ Windows / Linux และจุดเชื่อมต่อของ Windows

UI แบบลีนและเข้าถึงได้ง่าย: เหมาะอย่างยิ่งสำหรับความเร็วและชุดข้อมูลขนาดใหญ่

อัลกอริทึมที่เข้ารหัสใน C ++ อย่างสมบูรณ์

ตัวบ่งชี้ความคืบหน้าทั้งหมดได้รับการปรับปรุงเพื่อประสิทธิภาพสูงสุด!

สร้าง Batch Jobs สำหรับการซิงโครไนซ์อัตโนมัติโดยมีหรือไม่มี GUI

มุ่งเน้นไปที่การใช้งาน:

ฟังก์ชั่นที่จำเป็นเท่านั้นใน UI: ไม่มีเมนูหรือไอคอนป่ามากเกินไป

เลือกโฟลเดอร์ทั้งหมดด้วยการลากและวาง

การกำหนดค่าที่ใช้ล่าสุดและการตั้งค่าหน้าจอจะถูกบันทึกโดยอัตโนมัติ

บำรุงรักษาและโหลดการกำหนดค่าที่แตกต่างกันโดยการลากและวาง, ปุ่มโหลดหรือ commandline

ดับเบิลคลิกเพื่อเริ่มแอปพลิเคชันภายนอก (เช่นแสดงไฟล์ใน Windows Explorer)

คัดลอกและวางข้อมูลกริดทั้งหมดเป็นข้อความ

ลบไฟล์ที่ไม่จำเป็น / ชั่วคราวบนกริดหลักโดยตรง

คลิกขวาที่เมนูบริบท

ข้อมูลสถานะที่ครอบคลุมและการรายงานข้อผิดพลาด

เรียงรายการไฟล์ตามชื่อขนาดหรือวันที่

รองรับไฟล์ขนาดใหญ่กว่า 4 GB

ตัวเลือกในการย้ายไฟล์ไปที่ Recycle Bin แทนที่จะลบ / เขียนทับไฟล์เหล่านั้น

ละเว้นไดเรกทอรี "\ RECYCLER" และ "\ System Volume Information" ด้วยตัวกรองเริ่มต้น (Windows เท่านั้น)

เวอร์ชันที่แปลเป็นภาษานั้นมีให้ในหลายภาษา

ลบก่อนคัดลอก: หลีกเลี่ยงการขาดแคลนพื้นที่ดิสก์สำหรับงานซิงค์ขนาดใหญ่

กรองการทำงานเพื่อรวม / ไม่รวมไฟล์จากการซิงโครไนซ์ (โดยไม่ต้องมีการเปรียบเทียบอีกครั้ง!)

รวม / แยกไฟล์เฉพาะจากการซิงโครไนซ์ชั่วคราว

จัดการการเปลี่ยนแปลงการปรับเวลาตามฤดูกาลโดยอัตโนมัติสำหรับปริมาณ FAT / FAT32

มีรุ่นพกพา (เลือกได้ผ่านตัวติดตั้ง)

รุ่นเนทิฟ 64 บิต

ตรวจสอบการอัปเดตจากภายใน FreeFileSync โดยอัตโนมัติ

คัดลอกไฟล์ที่ล็อคโดยใช้ Windows Volume Shadow Copy Service (Windows เท่านั้น)

สร้างการสำรองข้อมูลปกติด้วยแมโคร% time%,% date% ภายในชื่อไดเรกทอรี

คัดลอกไฟล์และโฟลเดอร์เวลาในการสร้าง / เข้าถึง / แก้ไขเมื่อทำการซิงโครไนซ์

กลยุทธ์การล็อคขั้นสูงเพื่อให้กระบวนการซิงโครไนซ์หลายครั้ง (เช่นนักเขียนหลายคนแชร์เครือข่ายเดียวกัน)

ฉันจะเพิ่มมันสามารถจัดการไฟล์ที่ถูกลบย้ายมันไปที่ถังขยะหรือโฟลเดอร์ที่ระบุโดยผู้ใช้ เพื่อชี้ให้เห็นข้อเสีย: เอกสารของโปรแกรมเน้นไปที่ Windows, Linux น้อยกว่า แต่มันทำงานได้ดี


3

คุณสามารถใช้การกระจาย:

sudo apt-get install diffuse
diffuse file1 file2

2
ฉันมักจะใช้ Diffuse สำหรับคุณสมบัตินักฆ่าเดียว - ความสามารถในการรวมจุดยึดด้วยตนเอง มันไม่ได้ทำไดเรกทอรี (ยัง) แต่สำหรับบุคคลและยุ่งเหยิงคุณสมบัติจุดยึดน่ากลัว
Sk606

2

คุณสามารถลองmeld

มันเป็นที่เก็บและให้ GUI สำหรับการเปรียบเทียบไฟล์หรือโฟลเดอร์


1
Meld เป็น GUI สำหรับ diff, btw
Marco Ceppi

1

Eclipse IDE เป็นบิตเฮฟวี่เวทเล็กน้อยหากคุณเพิ่งทำการเปรียบเทียบ แต่มันทำงานได้ดีในสิ่งอื่น ๆ คุณสามารถเลือก 2 โครงการพา ธ หรือไฟล์และเปรียบเทียบกับโครงการอื่นและยังซิงโครไนซ์กับเซิร์ฟเวอร์ตัวควบคุมแหล่งที่มา


1

IMHO FreeFileSync ดีมากและมีประโยชน์มากกว่า Meld มันรวดเร็วและมีเสถียรภาพสามารถทำการซิงโครไนซ์ที่ปรับราคาได้และยังสามารถส่งออกผลลัพธ์ของการเปรียบเทียบลงในไฟล์ csv

ลิงก์ Lanchpad



0

เพื่อเปรียบเทียบไฟล์

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

คุณสามารถใช้คำสั่งcmp:

cmp -b "File_1.txt" "File_2.txt"

การส่งออกจะเป็น

a b differ: byte 11, line 2 is  62 2  40  

เพื่อเปรียบเทียบ dirs (ความต้องการของคุณ):

คุณสามารถใช้คำสั่งdiff :

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.