ইউনিক কমান্ড ঠিকমতো কাজ করছে না?


22

সুতরাং আমি md5আমার ফাইলগুলির হ্যাশটিকে আমার আউটপুট হিসাবে এটি পরীক্ষা করছি :

657cf4512a77bf47c39a0482be8e41e0  ./dupes2.txt
657cf4512a77bf47c39a0482be8e41e0  ./dupes.txt
8d60a927ce0f411ec94ac26a4785f749  ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3  ./foo.txt
8d60a927ce0f411ec94ac26a4785f749  ./derp.txt

যাইহোক, find . -type f -exec md5sum '{}' ';' | uniq -w 33অনন্য হ্যাশগুলি খুঁজতে দৌড়ানোর পরে আমি এটি পেয়েছি:

657cf4512a77bf47c39a0482be8e41e0  ./dupes2.txt
8d60a927ce0f411ec94ac26a4785f749  ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3  ./foo.txt
8d60a927ce0f411ec94ac26a4785f749  ./derp.txt

আমার বোধগম্যতা থেকে, কেবল দুটি derpina.txtবা derp.txtএকটিরই প্রদর্শিত হবে কারণ তাদের হ্যাশগুলি একই। আমি কিছু অনুপস্থিত করছি? কেউ আমাকে আলোকিত করতে পারে কেন এটি এরকম ফলাফল হয়?


1
এটা বের করে আনা। দৃশ্যত ইউনিক পুনরাবৃত্ত লাইনগুলি সংলগ্ন না করে সনাক্ত করে না। উত্তর লিঙ্ক আছে যা সাহায্য করেছে আমাকে stackoverflow.com/questions/23114677/...
user2127726

উত্তর:


48

আপনার sortআগে ব্যবহার করা উচিত uniq:

find . -type f -exec md5sum {} ';' | sort | uniq -w 33

uniqকেবল পুনরাবৃত্তি করা লাইনগুলি সরিয়ে দেয়। এটি পুনরাবৃত্তিগুলির জন্য অনুসন্ধান করা লাইনগুলিকে পুনরায় অর্ডার দেয় না। sortযে অংশ না।

এটি নথিভুক্ত করা হয় man uniq:

দ্রষ্টব্য: 'ইউনিীক' পুনরাবৃত্ত লাইনগুলি সংলগ্ন না করে সনাক্ত করে না। আপনি প্রথমে ইনপুটটি বাছাই করতে পারেন, বা sort -u' withoutইউনিক ব্যবহার করতে পারেন ।


uniqsort -uসমস্ত সিস্টেমে ডিফল্ট হিসাবে প্রান্তিক করা উচিত । এটিকে সঠিকভাবে কাজ করার জন্য যদি সর্বদা এটির "সাজান" দরকার হয়।
দেবরূপ

এই পরিবর্তন কিছু বিভ্রান্তি হ্রাস করবে। অন্যদিকে, এর uniqসাথে অনেকগুলি বৈশিষ্ট্য উপলব্ধ নেই sort -u। এছাড়াও, এমন কেস রয়েছে যেগুলি uniqছাড়াই কেউ ব্যবহার করতে চায় sort
1024

5

জন্য ইনপুট uniqবাছাই করা প্রয়োজন। উদাহরণস্বরূপ ক্ষেত্রে,

find . -type f -exec md5sum '{}' ';' | sort | uniq -w 33

কাজ করবে -w( --check-chars=N) কেবল প্রথম কলামের ক্ষেত্রে লাইনগুলি অনন্য করে তোলে; এই বিকল্পটি এই ক্ষেত্রে কাজ করে। তবে লাইনটির প্রাসঙ্গিক অংশগুলি নির্দিষ্ট করার সম্ভাবনাগুলি uniqসীমিত। উদাহরণস্বরূপ, কলাম 4 উপেক্ষা করে 3 এবং 5 এর কিছু কলামে কাজ করার জন্য কোনও বিকল্প নেই।

কমান্ডটিতে sortস্বতন্ত্র আউটপুট লাইনের জন্য একটি বিকল্প রয়েছে এবং বাছাইয়ের জন্য ব্যবহৃত কীগুলি সম্পর্কিত লাইনগুলি অনন্য। এর অর্থ আমরা sortকোন অংশে লাইনগুলি একীক হওয়া উচিত তা নির্ধারণের জন্য শক্তিশালী কী সিনট্যাক্সটি ব্যবহার করতে পারি।

উদাহরণস্বরূপ,

find . -type f -exec md5sum '{}' ';' | sort -k 1,1 -u

কেবল একই ফলাফল দেয় তবে sortঅংশটি অন্যান্য ব্যবহারের জন্য আরও নমনীয়।


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