উত্তর:
খুঁজে পাওয়ার জন্য অন্তর্নির্মিত কিছুই নেই, এমনকি জিএনইউ অনুসন্ধানও। findস্ল্যাশের সংখ্যা অনুসারে বাছাইয়ের আউটপুট পোস্টপ্রসেস করতে পারেন, উদাহরণস্বরূপ পার্ল সহ:
find ... | perl -e 'print sort {$a=~s!/!/! <=> $b=~s!/!/!} <>'
<> সমস্ত ইনপুট লাইনের তালিকা;$a =~ s!/!/!gস্ল্যাশের সংখ্যা হ'ল $a, যা আমরা বাছাইয়ের মানদণ্ড হিসাবে ব্যবহার করি।আপনি যদি zsh ব্যবহার করতে পারেন:
echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
**/* বর্তমান ডিরেক্টরি এবং সাব ডিরেক্টরি ডিরেক্টরিতে সমস্ত ফাইল তালিকাভুক্ত করে।oeগ্লোব কোয়ালিফায়ার ক্রমগুলি নিয়ন্ত্রণ করে যেখানে ম্যাচগুলি ফিরে আসে: তারা REPLYকোডটি এখানে চালানোর পরে প্রতিটি ম্যাচের জন্য উদ্ধৃতিতে REPLYপ্রাথমিকভাবে ম্যাচের পথে সেট করা মান অনুসারে বাছাই করে ।$REPLYস্ল্যাশ বাদে সবকিছু মুছতে রূপান্তর করে। সুতরাং ফলাফলের গভীরতা 1 (খালি ফলাফল $REPLY) এর সমস্ত কিছু রয়েছে, তারপরে গভীরতা 2 ( $REPLYশেষ পর্যন্ত হওয়া /), গভীরতা 3 ( //) ইত্যাদি রয়েছে everythingনাঃ
যান এই প্রশ্নের সমাধান নীচে উপস্থিত জন্য ইত্যাদি।
আমার অনুভূতি হ'ল তুমি পারো এটি গ্রেপ এবং এই জাতীয় এবং একটি লুপ জড়িত, কিন্তু আমি এটি খুব ভাল কাজ করে, বিশেষত আপনার ক্ষেত্রে এটি সম্পন্ন করা প্রয়োজন হয় না সম্পর্কিত ক্ষেত্রে ক্ষেত্রে জন্য।
এটি আরও সংস্থার নিবিড় কারণে:
এটি ভাল কারণ:
#! / বিন / ব্যাশ
গভীরতা = 0
যখন -মাইন্ডেপথ $ গভীরতা -ম্যাক্সডেপথ $ গভীরতা | গ্রেপ '।'
করা
গভীরতা = $ (গভীরতা + 1)
সম্পন্ন
আপনি এটি সহজেই এক লাইনে ফিট করতে পারেন (?) সহজেই:
depth=0; while find -mindepth $depth -maxdepth $depth | grep --color=never '.'; do depth=$((depth + 1)); done
তবে আমি টাইপ করার চেয়ে ছোট স্ক্রিপ্ট পছন্দ করি ...