বিভ্রান্ত করুন - মুদ্রণ এবং ছাঁটাই বিকল্প (ইউনিক্স) সম্পর্কে


0
compa> find . -type d
.
./2015_08_30
./2015_08_25
./2015_08_27
./2015_08_31
./2015_08_24
./2015_08_26


compa> find . -type d -print
.
./2015_08_30
./2015_08_25
./2015_08_27
./2015_08_31
./2015_08_24
./2015_08_26

Q1) আমি -প্রিন্টের সাথে বা ছাড়া কোনও পার্থক্য দেখছি না। আমরা তখন প্রিন্ট কেন ব্যবহার করব?

================== পরবর্তী আমি বাদ দিতে 2015_08_31 ফোল্ডারটি দেখতে চাই।

compa> find . -name "2015_08_31"
./2015_08_31
compa> find . -name "2015_08_31" -prune
./2015_08_31

আমি যদি ছাঁটাইয়ের পিছনে একটি-প্রিন্ট রাখি তবে এটি কার্যকর হয়

find . -name "2015_08_31" -prune -o -print

প্রশ্নোত্তর) কেন? আসলে কি? আমি বিশ্বাস করি এটি একটি "বা"?

আবার একটি-নাম পরিবর্তন করে সমস্ত কিছু পরিবর্তন করুন।

compa> find . -name "2015_08_31" -prune -o -name "2015_08_30"
./2015_08_30
./2015_08_31

Q3) আমি যখন "2015_08_31" ছাঁটাই করতে নির্দিষ্ট করেছিলাম তখন কেন এটি 08_30 এবং 08_31 দেখাচ্ছে?

উত্তর:


0

এর জন্য ডিফল্ট ক্রিয়া findহ'ল মুদ্রণ, যে কারণে আপনি প্রাথমিক উদাহরণে মুদ্রণ কমান্ডের সাথে বা এটি ছাড়া কোনও পার্থক্য দেখেন না don't

আমাকে স্বীকার করতে হবে যে আমি কখনও ব্যবহার করি নি -pruneতবে ম্যান পৃষ্ঠাটি পড়ার সময় দেখে মনে হচ্ছে এটি এটি যা করে তা আপনি মনে করেন না বলে মনে হয়।

-প্রুন সত্য যদি ফাইলটি ডিরেক্টরি হয় তবে এটিতে নামবেন না।

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

পরবর্তী সমস্ত উদাহরণগুলি কী -pruneকরে বা findআসলে কীভাবে কাজ করে তার এই ভুল বোঝাবুঝি থেকে উদ্ভূত হয়েছে ।

আপনি যদি findসেই ডিরেক্টরিটি প্রিন্ট করতে না চান তবে চেষ্টা করুন

find . -type d ! -name "2015_08_31"

এই কমান্ডে, findঅধীনে সমস্ত ডিরেক্টরি এর নাম মুদ্রণ করবে। "2015_08_31" ব্যতীত। তবে, এই আদেশটি "2015_08_31" এর অধীনে যে কোনও উপ-ডিরেক্টরি মুদ্রণ করবে।

আপনি যদি সেই ডিরেক্টরিটির সাথে কিছু করতে না চান তবে আপনি চেষ্টা করতে পারেন

find . -type d ! -regex "./2015_08_31.*"

0

Q1) আমি -প্রিন্টের সাথে বা ছাড়া কোনও পার্থক্য দেখছি না। আমরা তখন প্রিন্ট কেন ব্যবহার করব?

-printঅন্য কোনও ক্রিয়াকলাপের ডিফল্ট ক্রিয়া নির্দিষ্ট নয়। ম্যান পৃষ্ঠা থেকে:

   If the expression contains no actions other than -prune, -print is per‐
   formed on all files for which the expression is true.

প্রশ্নোত্তর) কেন? আসলে কি? আমি বিশ্বাস করি এটি একটি "বা"?

ম্যান পৃষ্ঠা থেকে:

   expr1 -o expr2
          Or; expr2 is not evaluated if expr1 is true.

Q3) আমি যখন "2015_08_31" ছাঁটাই করতে নির্দিষ্ট করেছিলাম তখন কেন এটি 08_30 এবং 08_31 দেখাচ্ছে?

-pruneকর্ম বন্ধ করে দেবে findসেই ডিরেক্টরি মধ্যে সাজানো থেকে, কিন্তু তাদের আউটপুট থেকে বাদ করা হবে না। নিম্নলিখিত ফাইল গঠন বিবেচনা করুন:

.
./2015_08_31
./2015_08_30
./2015_08_30/test_dir
./2015_08_30/test_dir/test_file_1
./2015_08_30/test_dir/test_file_3
./2015_08_30/test_dir/test_file_2

চলমান:

find . -name "2015_08_31" -prune -o -name "2015_08_30"

প্রদর্শন করা হবে:

./2015_08_31
./2015_08_30

যে, ডি ডিরেক্টরিতে findঅবতরণ করে না prune


-তঃ-তে একটি অস্পষ্টতা রয়েছে। অথবা; expr1 টি সত্য হলে expr2 মূল্যায়ন করা হয় না। যদি expr1 সত্য হয় যা -র নাম "2015_08_31" হয়, তবে কেন expr2 "2015_08_30" প্রদর্শিত হয়?
নুব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.