ডিআইএফএফ ইউটিলিটি 2 টি ফাইলের জন্য কাজ করে। একসাথে 2 টিরও বেশি ফাইলের তুলনা কীভাবে করা যায়?


86

ইউটিলিটি ডিফটি যেমন 2 ফাইলের জন্য চাই ঠিক তেমনভাবে কাজ করে তবে আমার একটি প্রকল্প রয়েছে যা একবারে 2 টিরও বেশি ফাইলের সাথে তুলনা প্রয়োজন, সম্ভবত এক সাথে 10 টি পর্যন্ত। এটির জন্য একে অপরের পাশাপাশি পাশাপাশি থাকা সমস্ত ফাইল থাকা দরকার। আমার গবেষণা সত্যিই কিছু আপ করে নি, ভিমডিফ এক সাথে 4 টি তুলনা করার ক্ষমতা দিয়ে এখনও পর্যন্ত সেরা বলে মনে হচ্ছে।

আমার প্রশ্ন: একসাথে 2 টিরও বেশি ফাইলের তুলনা করার কি কোনও ইউটিলিটি আছে বা ডিফ / ভিমডিফ হ্যাক করার উপায় রয়েছে যাতে এটি একাধিক তুলনা করতে পারে? আমি যে ফাইলগুলির সাথে তুলনা করব সেগুলি তুলনামূলকভাবে ছোট তাই এটি খুব ধীর হওয়া উচিত নয়।

আগাম ধন্যবাদ!

উত্তর:


111

পাশাপাশি 10 টি ফাইল প্রদর্শন করা এবং পার্থক্য হাইলাইট করা সহজেই ডিফিউজের সাহায্যে করা যেতে পারে । কমান্ড লাইনে সমস্ত ফাইলকে কেবল এটির মতো নির্দিষ্ট করুন:

বিচ্ছুরিত 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 10.txt


4
বাহ এটা দুর্দান্ত! এমনকি দেরিতে প্রতিক্রিয়াটির জন্য ধন্যবাদ, আমার এখনও সহায়তা দরকার।
জাভেদ আহমেদ

4
এই ধরণের তুলনা বলা হয়?
leeand00

4
কল্পনাপ্রসূত সরঞ্জাম; শুধু আমাকে একটি ভেক্সিং সমস্যা সমাধানে সহায়তা করেছে। আমি জানি এটি একটি পুরানো উত্তর, তবে আপনাকে ধন্যবাদ!
শানকিলেন

হাজারবার ধন্যবাদ! একগুচ্ছ অনুলিপি-অনুলিপি করা ফাইলের ছোট ছোট পার্থক্যগুলি খুঁজে পেতে অনেক সাহায্য করেছে।
Trass3r

4
@ গ্রুবার - আমার অবশ্যই লিঙ্কটি খারাপ সময়ে হিট করতে হবে - আমি আমার মন্তব্য সরিয়ে দিয়েছি
লড়াই 2

30

ভিম ইতিমধ্যে এটি করতে পারে:

vim -d file1 file2 file3

তবে আপনি সাধারণত 4 টি ফাইলের মধ্যে সীমাবদ্ধ থাকেন। তবে আপনি ভিমের উত্সের একটি একক লাইন পরিবর্তন করে এটি পরিবর্তন করতে পারেন। ধ্রুব DB_COUNTসর্বোচ্চ সংখ্যক সংজ্ঞায়িত পরিবর্তন ইডি ফাইল, এবং এটি উপরে দিকে সংজ্ঞায়িত হচ্ছে diff.cপথ দুই তৃতীয়াংশ সম্পর্কে নিচে সংস্করণ 6.x এবং তার আগে, অথবা structs.hসংস্করণ 7.0 এবং আপ হবে।


কমপক্ষে আমার কম্পিউটারে একবারে 4 টি ফাইল করতে পারেন ভিমডিফ বা ভিআইএম-ডি। কেউ এই কিভাবে বাইপাস জানেন?
জাভেদ আহমেদ

আমি প্রশ্নের উল্লেখ উল্লেখ করিনি। ভিমের সীমা পরিবর্তন করার নির্দেশাবলী অন্তর্ভুক্ত করার জন্য আপডেট করা হয়েছে।
নোহ মেডেলিং

আরে, আপনি কি জানেন যে কীভাবে স্ট্রাক্টস h বা ডিফ সি। আমি উইন বা লিনাক্সে ভিএম উত্স কোডটি খুঁজে পাচ্ছি না।
জাভেদ আহমাদ

ভিআইএম দুটিরও বেশি ডিরেক্টরিতে ডিরেক্টরি তুলনা করতে সক্ষম বলে মনে হচ্ছে না, যা দরকারীতা সীমাবদ্ধ করে। আরও সীমাবদ্ধতা হ'ল যখন ফাইলগুলি একে অপরের সাথে তুলনা করা হয় আপনি কেবল ফাইলের বাম দিকে দেখতে পারেন, সমস্ত কিছু দেখার জন্য কোনও স্ক্রোল বার নেই। এবং পরিবর্তনগুলি পিছনে পিছনে ধাক্কা দেওয়ার কোনও জিইউআই পদ্ধতি নেই।
জেরেম গেন্টার

7

diffঅন্তর্নির্মিত বিকল্প রয়েছে --from-fileএবং এটি --to-fileঅন্য সকলের সাথে একটি অপারেন্ডের তুলনা করে।

   --from-file=FILE1
          Compare FILE1 to all operands.  FILE1 can be a directory.

   --to-file=FILE2
          Compare all operands to FILE2.  FILE2 can be a directory.

আশা করি আমি এটি বাস্তব ফাইল পাথের পরিবর্তে প্রক্রিয়া বিকল্পের সাথে কাজ করতে পারি।
জানু কিউ পেবলিক

4
@ জানকিউপেলব্লিক যদি আপনি zsh ব্যবহার করেন তবে প্রক্রিয়া প্রতিস্থাপনের = (...) ফর্মটি পরীক্ষা করে দেখুন যা কোনও টেম্পল
এরিক Freese

2

"তুলনার বাইরে" চেকআউট করুন: http://www.scootersoftware.com/

এটি আপনাকে ফাইলগুলির সম্পূর্ণ ডিরেক্টরিগুলির তুলনা করতে দেয় এবং দেখে মনে হচ্ছে এটি লিনাক্সেও চলে।


4
diff -r ফাইলগুলির সম্পূর্ণ ডিরেক্টরিকেও তুলনা করে, তবে এটি কেবল কখনও কখনও একটি ডিরেক্টরি থেকে অন্য ডিরেক্টরি থেকে ফাইলগুলির তুলনা করে
পুনরায় পোস্টার

6
তুলনার বাইরেও একটি দুর্দান্ত সরঞ্জাম এবং আমি একত্রীকরণের বিরোধগুলি সমাধান করতে সব সময় এটি ব্যবহার করি। তবে এই কাজের জন্য এটি সঠিক সরঞ্জাম নয়, কারণ এটি কেবলমাত্র অন্যদের বিরুদ্ধে বা সাধারণ পূর্বপুরুষের বিরুদ্ধে দুটি ফাইলের তুলনা করতে পারে।
সুপারল

-1 এর জন্য দুঃখিত, তবে এটি একে অপরের সাথে অনেকগুলি ফাইলের তুলনা করে।
মনোহর রেড্ডি পোরেড্ডি

1

যদি আপনার চলমান একাধিক ডিফের ভিত্তিতে একটি ফাইল থাকে তবে আপনি সম্ভবত কোনও স্ক্রিপ্ট লেখার চেষ্টা করতে পারেন যা প্রতিটি ডিরেক্টরিতে চালিয়ে যাওয়ার জন্য এবং লফটি চালানোর জন্য লুপের জন্য রয়েছে। যদিও এটি পাশাপাশি না থাকলে আপনি অন্তত তাদের দ্রুত তুলনা করতে পারেন। আশা করি যে সাহায্য করেছে।


হ্যাঁ তবে আমি উদাহরণস্বরূপ 3 টি ফাইলের সাথে তুলনা করছি, আমি তাদের অন্য 2 টি ফাইলের বিপরীতে আলাদা করতে চাই, যেহেতু ভিন্নতাগুলি সেগুলি মেলে কোথায় তা দেখতে পুনরায় সাজানোর চেষ্টা করে।
জাভেদ আহমেদ

আমি এই কমান্ডটি পেয়েছি যা আপনার স্ক্রিপ্ট, ডাইফফ 3 নামে পরিচিত এবং সম্ভবত তিনটি ফাইলের তুলনা করার জন্য এটির একটি ইউটিলিটি সাহায্য করতে পারে। linux.about.com/library/cmd/blcmdl1_diff3.htm উইন্ডোজ সংস্করণটি এখানে পাওয়া যাবে gnuwin32.sourceforge.net/packages/diffutils.htm
বেনজামিন নীল

0

মূল প্রশ্নের উত্তর না দিয়ে, এখানে বেনজামিন নীল যা বলেছে তার সবথেকেই আলাদা, তবে সমস্ত ফাইলের মধ্যে পৃথকতা রয়েছে :

ফাইলের নামগুলি একটি অ্যারেতে সংরক্ষণ করুন, তারপরে আকার দুটি এবং ডিফের সংমিশ্রণের উপর লুপ করুন (বা আপনি যা চান তা করুন)।

files=($(ls -d /path/of/files/some-prefix.*))     # Array of files to compare
max=${#files[@]}                                  # Take the length of that array
for ((idxA=0; idxA<max; idxA++)); do              # iterate idxA from 0 to length
  for ((idxB=idxA + 1; idxB<max; idxB++)); do     # iterate idxB + 1 from idxA to length
    echo "A: ${files[$idxA]}; B: ${files[$idxB]}" # Do whatever you're here for.
  done
done

@ চার্লস-ডফির উত্তর থেকে প্রাপ্ত : https://stackoverflow.com/a/46719215/1160428


0

এটি করার সহজ একটি সহজ উপায় রয়েছে = জিআরইপি।

পাঠ্যের আকারের উপর নির্ভর করে আপনি এটিকে অনুলিপি এবং আটকানোতে পারেন বা আপনি ফাইলের ইনপুটটিকে গ্রেপ কমান্ডে পুনর্নির্দেশ করতে পারেন। যদি আপনি কোনও বিপরীত অনুসন্ধান বা একটি গ্রেপ -ir / পাথ তৈরির জন্য কোনও গ্রেপ-ভাইয়ার / পাথ তৈরি করেন। শংসাপত্র পরীক্ষার জন্য এটি আমার উপায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.