এমন কোনও লিনাক্স / ইউনিক্স সরঞ্জাম রয়েছে যা একটি ডিরেক্টরিতে থাকা সমস্ত ফাইল অন্যটিতে উপস্থিত থাকে না? মূলত আমি ডিফের সন্ধান করছি যা এলএস এর আউটপুটটিতে কাজ করে।
সংক্ষিপ্ত এবং মিষ্টি স্ক্রিপ্টগুলি প্রশংসা করা হয়।
এমন কোনও লিনাক্স / ইউনিক্স সরঞ্জাম রয়েছে যা একটি ডিরেক্টরিতে থাকা সমস্ত ফাইল অন্যটিতে উপস্থিত থাকে না? মূলত আমি ডিফের সন্ধান করছি যা এলএস এর আউটপুটটিতে কাজ করে।
সংক্ষিপ্ত এবং মিষ্টি স্ক্রিপ্টগুলি প্রশংসা করা হয়।
উত্তর:
diff
এটি ইতিমধ্যে:
diff dir1 dir2
উদাহরণ আউটপুট:
Only in dir1: some_file.txt
Only in dir1: some_other_file.txt
Only in dir2: third_file.txt
ব্যাশ:
diff <(cd dir1; ls) <(cd dir2; ls)
কেবল ফাইলের সাথে তুলনা করুন - ফাইলগুলির বিষয়বস্তু নয়।
ls
, find
পরিবর্তে ব্যবহার করুন!
আপনি যদি সমস্ত সাব ডিরেক্টরিতেও এটি করতে চান, তবে এটি করার একটি ভাল উপায়:
diff --brief -r dir1/ dir2/
আমি সংক্ষিপ্ত ব্যবহার পছন্দ করি, তবে আপনি চান তা বাদ দিতে পারেন।
ডেনিস উইলিয়ামসনের একটি ভাল উত্তর ছিল , তবে আমার এটি পুনরাবৃত্তভাবে করা দরকার। জিএনইউ অনুসন্ধানসমূহ ৪.7.০ এর আউটপুটটিকে বাছাই করে না, তাই আমি যা ব্যবহার করেছি তা এখানে
diff <(cd $dir1; find | sort) <(cd $dir2; find | sort)
এটি শুধুমাত্র একটি উপায়ে করতে এবং ফাইলগুলির একটি তালিকা উত্পাদন করতে, আমি এটি ব্যবহার করেছি:
diff <(cd $dir1; find | sort) <(cd $dir2; find | sort) \
| grep '< ./' | sed "s,< ./,$dir1/,"
এটি সঠিকভাবে কাজ করার জন্য, $ dir1 বা $ dir2 উভয়ের মধ্যেই চলমান স্ল্যাশ অন্তর্ভুক্ত করা উচিত নয়।
diff dir1 dir2 | grep "Only"