উত্তর:
আপনি diff
এটির জন্য কমান্ডটি ব্যবহার করতে পারেন :
diff -bur folder1/ folder2/
এটি একীভূত প্রসঙ্গ সহ ফাঁকা স্থানগুলিকে উপেক্ষা করে এমন একটি পুনরাবৃত্ত ডিফ আউটপুট দেবে:
-b
সাদা স্থান পরিবর্তনগুলি উপেক্ষা করে এবং -u
3 টি লাইনের বাফার দেয়।
diff -rub folder1/ folder2/
-bur
যদি মনে করি আপনি শীতল আবহাওয়াতে বাস করতেন তবে মনে রাখা সহজ হত imagine
যদি আপনি কেবল সেই ফাইলগুলি দেখতে পৃথক হন তবে আপনি এটি ব্যবহার করতে পারেন:
diff -qr dir_one dir_two | sort
বিকল্প "কিউ" কেবলমাত্র পৃথক পৃথক ফাইলগুলি প্রদর্শন করবে তবে ভিন্ন ভিন্ন সামগ্রীগুলি নয় এবং "সাজান" আউটপুটকে বর্ণানুক্রমিকভাবে সাজাবে arrange
diff
দুটি ফাইলের জন্য বিশদ করুন। এক-দু'টি ফাইলের বিপরীতে যদি কয়েক ডজন ফাইলের মধ্যে পার্থক্য থাকে তবে কারওর দৃষ্টিভঙ্গি হিংস্রভাবে আলাদা হবে। আমি diff
একবারে কয়েক ডজন ফাইল আইএনপি থেকে আউটপুট হারিয়ে যেতে পারে !
-x PATTERN
নির্দিষ্ট সাব-ডাইরেক্টরি বাদ দিতে কমান্ড অন্তর্ভুক্ত করতে পারেন । উদাহরণস্বরূপ, diff -qr repo1 repo2 -x ".git"
দুটি ডিরেক্টরি (repo1 এবং repo2) তুলনা করা হবে তবে সংশ্লিষ্ট ডিরেক্টরিগুলির .git ফোল্ডারে ফাইলগুলি বাদ দেবে।
diff
দুটি ফাইলই কেবল তুলনা করতে পারে না, এটি -r
বিকল্প ব্যবহার করে পুরো ডিরেক্টরি গাছের হাঁটাচলা করতে পারে, প্রতিটি গাছের তুলনামূলক পয়েন্টগুলিতে সাব-ডাইরেক্টরিগুলি এবং ফাইলগুলির মধ্যে পুনরাবৃত্তভাবে পার্থক্য পরীক্ষা করতে পারে।
$ man diff
...
-r --recursive
Recursively compare any subdirectories found.
...
যদি এটি জিএনইউ থেকে পৃথক হয় তবে আপনি কেবল দুটি ডিরেক্টরিতে এটি নির্দেশ করতে এবং -r বিকল্পটি ব্যবহার করতে সক্ষম হবেন।
অন্যথায়, ব্যবহার করার চেষ্টা করুন
for i in $(\ls -d ./dir1/*); do diff ${i} dir2; done
মন্তব্য বিভাগে ডেনিসের দ্বারা এনবি হিসাবে উল্লেখ করা হয়েছে, আপনার আসলে কমান্ডের প্রতিস্থাপন এলএসএস করার দরকার নেই। আমি এত দিন ধরে এটি করে আসছি যে আমি স্বয়ংচালিতটিতে এটি অনেকটা করছি এবং তুলনা করার জন্য আমার ফাইলগুলির তালিকা পাওয়ার জন্য কমান্ডটি প্রতিস্থাপন করতে হবে।
এছাড়াও আমি যুক্ত করতে ভুলে গেছি যে আমি জিএনইউ এলএস-এ আমার অ্যালামের অস্থায়ীভাবে অক্ষম করতে 's ls' করি যাতে আমি জিএনইউ এলএস দ্বারা ফিরে আসা তালিকা থেকে বর্ণ বিন্যাসের তথ্যটি হারাতে পারি।
ls
:for i in ./dir1/*
দুটি ফোল্ডারে ফাইলের মধ্যে পার্থক্য দেখানোর জন্য এখানে একটি স্ক্রিপ্ট রয়েছে। এটি পুনরাবৃত্তির সাথে কাজ করে। Dir1 এবং dir2 পরিবর্তন করুন।
(search() { for i in $1/*; do [ -f "$i" ] && (diff "$1/${i##*/}" "$2/${i##*/}" || echo "files: $1/${i##*/} $2/${i##*/}"); [ -d "$i" ] && search "$1/${i##*/}" "$2/${i##*/}"; done }; search "dir1" "dir2" )
আপনি যদি বিশেষত ফাইলের সামগ্রীর তুলনা করতে না চান এবং কেবল উভয় ডিরেক্টরিতে কোনটি উপস্থিত নেই তা পরীক্ষা করে দেখতে চান, তবে আপনি অন্য কমান্ড দ্বারা উত্পন্ন ফাইলগুলির তালিকা তুলনা করতে পারেন।
diff <(find DIR1 -printf '%P\n' | sort) <(find DIR2 -printf '%P\n' | sort) | grep '^[<>]'
-printf '%P\n'
find
রুট ডিরেক্টরি সহ আউটপুট পাথ প্রিফিক্স না করতে বলে ।
sort
উভয় কলগুলিতে ফাইলের ক্রম একই হবে তা নিশ্চিত করার জন্য আমি যোগ করেছি find
।
grep
শেষে অভিন্ন ইনপুট লাইন সম্পর্কে তথ্য সরিয়ে ফেলা হয়।
এটা চেষ্টা কর:
diff -rq /path/to/folder1 /path/to/folder2
diff
ডাউনলোড করে আপনি কমান্ডটিতে অ্যাক্সেস পেতে পারেন ।