چگونه فایل ها را بر اساس محتوا در ویندوز یا لینوکس مقایسه کنیم؟ مروری بر ابزارهای مقایسه بصری و ادغام حل تعارض مقایسه فایل ها بر اساس اندازه لینوکس

برای مقایسه دو یا چند فایل، لینوکس دستور diff را دارد. می تواند هم فایل ها و هم دایرکتوری ها را با هم مقایسه کند. نحو، گزینه ها را در نظر بگیرید دستورات diffو چند نمونه استفاده

نحو دستور diff

دستور diff دارای نحو زیر است:

تفاوت [گزینه‌ها] فایل‌ها یا دایرکتوری‌ها

ما گزینه ها و خوراک را در دو یا چند فایل یا فهرستی که باید مقایسه کنیم مشخص می کنیم.

گزینه های دستور diff

گزینه های اصلی دستور diff را در نظر بگیرید. من فقط گزینه هایی را در نظر خواهم گرفت که خودم اغلب از آنها استفاده می کنم.

-ایتغییرات مرتبط با افزودن یک کاراکتر برگه در متن را نادیده بگیرید.
تغییرات مربوط به اضافه کردن فاصله ها را نادیده بگیرید.
-wتغییرات مربوط به افزودن فاصله ها و برگه ها را نادیده بگیرید.
خطوط خالی جدید را نادیده بگیرید
-p (یا --show-c-function)نام تابع زبان C را که تغییرات در آن پیدا شده است نشان دهید.
-y (یا - پهلو به پهلو)نمایش نتایج در دو ستون
-rفهرست ها را به صورت بازگشتی مرور کنید.
-X فایلفایل هایی را که نام آنها با الگوهای موجود در فایل FILE مطابقت دارد از جستجو حذف کنید.
-d (یا - حداقل)سعی کنید تا حد امکان تغییرات کمتری را پیدا کنید (یعنی موارد مثبت کاذب را حذف کنید).

نمونه هایی از استفاده از دستور diff

مقایسه دو فایل متنی

برای مقایسه ساده دو فایل های متنیبا نام‌های myfile1 و myfile2، دستور را در ترمینال اجرا کنید:

تفاوت myfile1 myfile2

تغییر مسیر خروجی دستور diff به فایلی با پسوند diff راحت است. اکثریت ویرایشگرهای متندر لینوکس، مانند Gedit، این فایل را بشناسید و نحو آن را برجسته کنید. برای هدایت نتیجه مقایسه به فایل change.diff، باید از نماد تغییر مسیر جریان (>) استفاده کنید:

Diff myfile1 myfile2 > changes.diff

مقایسه دایرکتوری های حاوی فایل های متنی

مثالی از مقایسه دو دایرکتوری (mydir1 و mydir2) که حاوی فایل های متنی هستند را در نظر بگیرید. تفاوت اصلی در اینجا با مثال بالا این است که ما گزینه -r را اضافه می کنیم که به معنای پیمایش بازگشتی فایل ها در دایرکتوری ها است.

Diff -r mydir1 mydir2 > change.diff

حال فرض کنید دایرکتوری هایی که در آنها فایل ها را با هم مقایسه می کنیم حاوی مقدار زیادی زباله هستند که نباید آنها را با هم مقایسه کنیم. بیایید یک فایل excludeFiles ایجاد کنیم و الگوها و نام فایل هایی را که نباید با هم مقایسه کنیم در آن بنویسیم. برای مثال، محتویات excludeFiles ممکن است به شکل زیر باشد:

*.o ChangeLog* *.bak *.exe

حالا بیایید به دستور diff بگوییم که از فایل excludeFiles ما هنگام مقایسه دایرکتوری ها استفاده کند:

Diff -r -X excludeFiles mydir1 mydir2 > changes.diff

بنابراین، ما در حال مقایسه فایل هایی هستیم که نام آنها با الگوهای موجود در فایل excludeFiles مطابقت ندارد، به عنوان مثال، vasya.exe یا ChangeLog12.

بیایید چند گزینه دیگر را اضافه کنیم که در بالا توضیح داده شده است تا نتیجه مقایسه را بهبود ببخشیم:

Diff -rwBd -X excludeFiles mydir1 mydir2 > changes.diff

ما فایل‌ها را در فهرست‌های mydir1 و mydir2 مقایسه می‌کنیم و تغییرات مربوط به اضافه کردن خطوط خالی، فاصله‌ها، برگه‌ها را نادیده می‌گیریم و از الگوهای نام فایل در excludeFiles برای حذف فایل‌های غیرضروری از مقایسه استفاده می‌کنیم.

نتیجه

برای اطلاعات بیشتر در مورد استفاده از دستور diff در شما سیستم لینوکسبا اجرای دستور می توانید دریافت کنید:

مرد تفاوت

همچنین برنامه هایی وجود دارند که به شما امکان می دهند فایل ها را با استفاده از آن مقایسه کنید رابط کاربری گرافیکی. برای مثال برنامه Meld که به صورت بصری نشان می دهد که کجا و چه چیزی در فایل ها تغییر کرده است.

، مقایسه آنها و همچنین مقایسه مشتریان رابط کاربری گرافیکی برای آنها. همچنین در مورد پلاگین های IDE برای کار با git و mercurial بحث هایی صورت گرفت. اما عملا هیچ اطلاعاتی وجود نداشتدر مورد ابزارهایی برای مقایسه بصری و ادغام حل تعارض.

من اخیراً از مرکوریال (که هنوز هم راحت تر و منطقی تر است) به git "پرش" کردم، زیرا اکثریت قریب به اتفاق پروژه هایی که به آن علاقه مند هستم از git استفاده می کنند و در github میزبانی می شوند. در این راستا، سؤال از بازنگری در زرادخانه ابزارها، به ویژه سؤال مطرح شد انتخاب ابزارمقایسه و ادغام بصری (تفاوت و ادغام). برای جبران کمبود اطلاعات در مورد هابره، تصمیم گرفتم این نقد کوچک را بنویسم. همانطور که می گویند - در تعقیب داغ.

در زیر برش، نمونه هایی از تنظیمات Git را برای استفاده با DiffMerge و WinMerge در ویندوز خواهید دید. فکر می کنم در زمان زیادی صرفه جویی شود.

نام ویژگی های خاص سکو

KDiff3

Git و WinMerge

1) به دایرکتوری اضافه کنید c:/git/libexec/git-core/mergetools/
فایل winmerge با محتوای زیر:

Diff_cmd () ( "c:/Program Files (x86)/WinMerge/WinMergeU.exe" \ "$LOCAL" "$REMOTE" >/dev/null 2>&1 ) merge_cmd () ( "c:/Program Files (x86 ) )/WinMerge/WinMergeU.exe" \ "$PWD/$LOCAL" "$PWD/$REMOTE" "$PWD/$MERGED" >/dev/null 2>&1 status=$؟ )
هنگامی که Git قادر به ادغام خودکار تغییرات نیست، یک تضاد ادغام رخ می دهد و نشانگرهای ادغام به فایل متضاد اضافه می شوند (<<<<<<<, =======, и >>>>>>>). آنها برای حل تعارض با استفاده از ابزارهای شخص ثالث ضروری هستند.
یک فایل را در نظر بگیرید readme.txtکه در نتیجه ادغام شاخه ها تشکیل می شود استاد و جدیددر مثال بالا:

<<<<<<< HEAD master str ======= new str >>>>>>> جدید
ما می توانیم فایل تضاد را با WinMerge باز کنیم تا تضاد حل شود.

این ابزار ادغام دو طرفه را باز می کند:

بر اساس منطق توصیف شده، دستور merge را بازنویسی می کنیم merge_cmdبه روش زیر:
merge_cmd () ( "c:/Program Files (x86)/WinMerge/WinMergeU.exe" \ "$MERGED" >/dev/null 2>&1 status=$? )
در اصل، هر دو گزینه معادل هستند.

2) ویرایش کنید gitconfig
tool=winmerge cmd="winmerge" tool=winmerge cmd="winmerge" trustExitCode=false keepBackup=false
آخرین خط ذخیره فایل های پشتیبان را در فهرست مخزن لغو می کند.

3) بیایید هنگام ادغام دو شاخه یک تضاد ایجاد کنیم (به مثالی با استفاده از DiffMerge مراجعه کنید).
git difftool master new // مقایسه دو شاخه

برای رفع تضاد هنگام ادغام شاخه ها، از دستور استفاده کنید
ابزار ادغام git

وب مسترها یا صاحبان سایت اغلب نیاز به مقایسه دو فایل بر اساس محتوا دارند. این مقاله نحوه مقایسه دو فایل را به شما نشان می دهد. تمام روش هایی که برای مقایسه فایل های متنی و اسکریپت ها (html، css، php و غیره) برای من شناخته شده است، در اینجا توضیح داده شده است.

روش 1 مخلوط کردن

مخلوط کردن- یک ابزار گرافیکی برای دریافت تفاوت ها و ادغام دو فایل، دو دایرکتوری. Meld یک ابزار بصری مقایسه و ادغام فایل و دایرکتوری برای لینوکس است. Meld در درجه اول بر توسعه دهندگان متمرکز است. با این حال، ممکن است برای هر کاربری که نیاز دارد مفید باشد ابزار خوببرای مقایسه فایل ها و دایرکتوری ها

در Meld می توانید دو یا سه فایل یا دو یا سه فهرست را با هم مقایسه کنید. می توانید نسخه کار خود را از سیستم های کنترل نسخه محبوب مانند CVS، Subversion، Bazaar-NG و Mercurial مشاهده کنید. Meld به اکثریت ارائه شد توزیع های لینوکس(اوبونتو، سوزه، فدورا و غیره)، و در مخازن اصلی آنها وجود دارد.

# aptitude install meld

روش 2: مقایسه محتویات دو فایل در WinMerge.

برنامه رایگان WinMerge به شما امکان می دهد نه تنها محتویات فایل ها را مقایسه کنید، بلکه محتویات کل پوشه ها را نیز مقایسه کنید. WinMerge یک ابزار متن باز تفاوت و ادغام برای ویندوز است. WinMerge می‌تواند فایل‌ها و پوشه‌ها را با هم مقایسه کند و تفاوت‌ها را در فرم متن بصری نشان دهد که درک و پردازش آسان است.

پس از نصب، آیتم منو "File" - "Open" را باز کنید. فایل ها را برای مقایسه انتخاب کنید. برای انجام این کار، بر روی دکمه "مرور" کلیک کنید و فایل را انتخاب کنید. پس از انتخاب فایل ها، روی دکمه "OK" کلیک کنید.

همچنین می توانید فایل ها را در WinMerge ویرایش کنید. پس از بستن پنجره مقایسه، برنامه از شما می خواهد که تغییرات را در فایل ها ذخیره کنید.

روش 3. تفاوت

تفاوت- یک ابزار مقایسه فایل که تفاوت بین دو فایل را نشان می دهد.

    برای مقایسه دایرکتوری ها از این دستور استفاده کنید: $ diff -qr< current-directory> < backup-directory>

روش 4 مقایسه کنید

Kompare - تفاوت بین فایل ها را نمایش می دهد. می تواند محتویات فایل ها یا دایرکتوری ها را مقایسه کند و همچنین فایل های پچ را ایجاد، نمایش و اعمال کند. Kompare یک ابزار تفاوت گرافیکی است که به شما امکان می دهد تفاوت ها را در فایل ها پیدا کنید و همچنین آنها را ادغام کنید. در Qt نوشته شده و اساساً برای KDE طراحی شده است. در اینجا ویژگی های اصلی آن است:

    پشتیبانی از فرمت های مختلف.

    مقایسه پشتیبانی فایل لینوکسو دایرکتوری ها؛

    پشتیبانی از مشاهده فایل های متفاوت.

    رابط قابل تنظیم؛

    ایجاد و اعمال وصله روی فایل ها.

روش 5. فایل ها را در Total Commander مقایسه کنید

AT فرمانده کلابزاری برای مقایسه فایل ها بر اساس محتوا وجود دارد که در آن نه تنها می توانید محتوا را مقایسه کنید، بلکه آن را ویرایش کرده و از یک فایل به فایل دیگر کپی کنید.

پس از راه اندازی Total Commander - در یکی از پنل ها (کلید درج) فایل اول را برای مقایسه انتخاب کنید - در پنل دوم پوشه را با فایل دوم باز کرده و مکان نما را روی آن قرار دهید. ما برنامه را برای مقایسه می نامیم: "Files → Compare by content".

برای ایجاد تغییرات در فایل کافیست روی دکمه "ویرایش" کلیک کنید. این برنامه دارای عملکردهای کپی و برگشت، جستجو و تغییر رمزگذاری است. اگر تغییراتی در فایل ایجاد کرده اید، پس از بستن پنجره مقایسه، از شما خواسته می شود که تغییرات را ذخیره کنید.

روش 6: مقایسه فایل ها در Notepad++

    سیستم عامل های پشتیبانی شده: ویندوز، می تواند بر روی لینوکس اجرا شود

Notepad++ نمی تواند فایل ها را با هم مقایسه کند. برای ظاهر شدن این قابلیت در Notepad ++، باید افزونه Compare را نصب کنید.

ویرایشگر را راه اندازی کنید - به آیتم منو "Plugins" - "Plugin Manager" - "Show Plugin Manager" بروید. در پنجره جدید افزونه «مقایسه» را انتخاب کرده و روی دکمه «نصب» کلیک کنید.

پس از نصب افزونه، دو فایل را باز کرده و منوی "Plugins" - "Compare" - "Compare (Alt + D)" را انتخاب کنید. نتیجه مقایسه فایل در پنل های جداگانه ارائه خواهد شد. خطوطی که در آن تفاوت‌ها مشاهده می‌شود، یک علامت هشدار در کنار آنها وجود دارد.

روش 7: فایل ها را با استفاده از خط فرمان ویندوز مقایسه کنید

مقایسه با استفاده از خط فرمانویندوز (cmd.exe) به شما اجازه ویرایش فایل ها را نمی دهد، اما می توانید به سادگی محتویات فایل ها را با استفاده از این روش مقایسه کنید.

برای فراخوانی یک فرمان رشته های ویندوزبه "Start" - "All Programs" - "Accessories" - "Command Prompt" بروید یا "Windows + R" را فشار دهید، cmd را تایپ کرده و Enter را فشار دهید.

در خط فرمان، دستور را وارد کنید:

مسیر fc / N به مسیر فایل اول به فایل دوم

مهم نیست که چه سیستمی را با کد خراب کنم، دیر یا زود نمی توان آن را مقایسه کرد نسخه های مختلفمنابع در اینجا ابزارهای رایگان آسان برای یافتن تفاوت‌ها در فایل‌ها در لینوکس، ویندوز و مک وجود دارد. فرمت راه اندازی کلی است file1 file2.

تحت ویندوز، وظیفه مقایسه محتویات فایل ها (و دایرکتوری ها، که گاهی اوقات بی فایده نیست) کار بسیار خوبی را انجام می دهد - WinMerge. سبک. به هیچ IDE وابسته نیست. نوشته شده در Qt و کراس پلتفرم - همچنین باید روی nix اجرا شود. علاوه بر فایل‌ها، می‌تواند محتویات دایرکتوری‌ها (از جمله موارد مبتنی بر ماسک‌های regexp) را با هم مقایسه کند. می توانید افزونه های اضافی اضافه کنید.

WinMerge یک ابزار مقایسه فایل بین پلتفرمی و موارد دیگر است

مک - opendiff. یک جزء Xcode جداگانه را نشان می دهد. کاملاً مستقل از خط فرمان راه اندازی می شود. تفاوت‌ها با خاکستری کم‌رنگ مشخص شده‌اند، اما اتفاقاً می‌تواند با فلش‌ها نشان دهد که چه چیزی در کجا اضافه شده است. می تواند ادغام (key -merge) را انجام دهد. اگر علاوه بر فایل های مقایسه شده، پس از کلید -ancestor یک فایل اجداد مشترک نیز مشخص کنید، مقایسه با آن انجام می شود. امکان مقایسه پوشه ها

ابزار opendiff - ابزار رایگانمقایسه فایل ها در سیستم مک

لینوکس - . به دلیل اینکه با Qt نیز نوشته شده است، در تمامی پلتفرم ها (ویندوز، مک، لینوکس) موجود است. امکان مقایسه حداکثر سه فایل یا فهرست. از قابلیت ادغام تغییرات، با پشتیبانی ویرایش برای حل تضاد دستی پشتیبانی می کند.

ابزار kdiff3 - مقایسه دو فایل

به روز رسانی 10/18/2013

اگر Gnom را روی nix اجرا می کنید، Meld یک انتخاب عالی است. ادغام با سیستم های کنترل نسخه محبوب (Git، Subversion، و غیره)، ابزارهای ادغام - ادغام خودکار، ویرایش با برداشتن تفاوت های فعلی در پرواز، برجسته سازی نحو. پورت هایی برای OS X Windows وجود دارد.

خوب، تا حد زیادی (اگر نمی توانید چیزی را شخص ثالث قرار دهید) - یک تفاوت ناخوشایند از زیر خط فرمان کمک می کند (این دستگاه از قبل روی سیستم های nix مانند، از جمله Mac و Solaris نصب شده است). قابل انعطاف. می‌توانید برای مدت طولانی و با ذوق با تنظیمات بازی کنید تا بتوانید تفاوت‌ها را بر اساس ماسک (-F) نشان دهید، در دو ستون معمولی (کلید – پهلو به پهلو) مقایسه کنید. برای فایل های حجیم ناآشنا، من خروجی را در قالب "متنقی" ترجیح می دهم، زمانی که نه تنها خطوط تغییر یافته، بلکه خطوط مجاور نیز نمایش داده می شوند.

برای مقایسه بیش از دو فایل، diff3 ممکن است مناسب باشد.