সাব ডিরেক্টরি এবং নির্দিষ্ট বাছাই ছাড়াই খালি ডিরেক্টরি খুঁজে পাওয়া যায় না


2

পড়াশোনায় আমার "হোমওয়ার্ক" নিয়ে আমার সমস্যা আছে।

আমি থেকে সব না খালি ডিরেক্টরি তালিকা আছে /varএবং /usrযা সাবডিরেক্টরি না এবং তাদের মালিক ব্যবহারকারী রুট নয়। এছাড়াও, প্রতিটি ডিরেক্টরির জন্য আমাকে ডিরেক্টরি ট্রি, আই-নোড নম্বর, আকার, মানব-পঠনযোগ্য এবং অষ্টাল ফর্ম্যাটে অনুমতি এবং এই ডিরেক্টরিটির নিখুঁত পাথের গভীরতা প্রদর্শন করতে হবে এবং আই-নোড সংখ্যা দ্বারা এটি উত্থিত বাছাই করতে হবে।

আমি বর্তমানে যা করেছি তা এখানে:

find /{us,va}r -type d \! -user root \! -empty -printf "%d %i %k %M %m %u %h/%f\n" | sort -rn

এখন আমি শুধু আছে সাবডিরেক্টরি সঙ্গে ডিরেক্টরি নিষ্কাশন এবং ই-নোড সংখ্যা দ্বারা তা বাছাই

সুতরাং, এখানে প্রশ্নগুলি আসে:

  1. আমি কীভাবে এই তালিকা থেকে উপ-ডিরেক্টরি সহ ডিরেক্টরিগুলি মুছে ফেলতে পারি?
  2. আমি এই তালিকাটি দ্বিতীয় কলামে থাকা আই-নোড দ্বারা কীভাবে বাছাই করতে পারি?

সাহায্যের জন্য ধন্যবাদ.


ঠিক আছে, আমি ভালো কিছু মূর্ত আউট: find /{us,va}r -links 2 -type d \! -user root \! -empty -printf "%d %i %k %M %m %u %h/%f\n" | sort -rnk 2। সব ঠিক আছে কিনা কেউ আমাকে বলতে পারবেন?
সেবাস্তিয়ান পটাসিয়াক

আমি কৌতুহলী; 'লিঙ্কগুলি' কীভাবে সাবডিয়ার নেই এমন ডিরেক্টরিগুলি সন্ধানে সহায়তা করে?
Tink

2
@ টিঙ্ক ডিরেক্টরিগুলির ক্ষেত্রে, সাব-ডাইরেক্টরিগুলির সংখ্যা হার্ড লিঙ্কগুলির গণনা হিসাবে সংরক্ষণ করা হয়। ডিফল্টরূপে, প্রতিটি ডিরেক্টরিতে (/ বাদে) দুটি উপ-ডিরেক্টরি থাকে: ''। এবং '..' (বর্তমান ডিরেক্টরি এবং মূল ডিরেক্টরি), তাই যদি আমি নির্দিষ্ট ডিরেক্টরিটির জন্য কেবল দুটি 'লিঙ্ক' আছে কিনা তা পরীক্ষা করে দেখি, আমি প্রকৃত সাব- ডিরেক্টরিগুলি ছাড়াই কেবল ডিরেক্টরিগুলি পাই ।
সেবাস্তিয়ান পটাসিয়াক

যদি আপনি আপনার সমস্যার সমাধান করেন তবে দয়া করে আপনার প্রশ্নের উত্তর এবং আপনার উত্তরটি গ্রহণ করার বিষয়ে বিবেচনা করুন।
ডেনিস

উত্তর:


1

সুতরাং, আমি ঠিক ছিল। সকল আমি কি ছিল যোগ করার জন্য ছিল -links 2যুক্তি find, তাই এটি হবে শুধুমাত্র 2 "হার্ড সংযোগগুলি" সঙ্গে আউটপুট ডিরেক্টরি (যা হয় না হার্ড সংযোগগুলি - এটা সাব কাউন্টার এবং প্রত্যেক ডিরেক্টরির কমপক্ষে 2 subdirs আছে - '।' ও '..' ) এবং -k 2তে sort, তাই এটি দ্বিতীয় কলাম অনুসারে বাছাই করবে।

পুরো কমান্ডটি এর মতো দেখাচ্ছে:

find /{us,va}r -links 2 -type d \! -user root \! -empty -printf "%d %i %k %M %m %u %h/%f\n" | sort -rnk 2

0

ঠিক আছে, আমি মনে করি আপনার সমস্যার একটি অজগর ভিত্তিক সমাধান পেয়েছি।

উদাহরণস্বরূপ, এবং chmod + x x.py হিসাবে এই স্নিপেট সংরক্ষণ করুন

#!/usr/bin/python
import sys
x=[]
for line in sys.stdin:
  x.append(line.rstrip())

y=x[:]
for i in x:
  mark=x.index(i)
  for j in y:
    if i.split()[6]  in j.split()[6]  and i != j:
      if i in y: y.remove(i)

for j in y:
  print j

তারপরে এটির মাধ্যমে আপনার ফাইন্ড কমান্ডটি (w / o লিংক বিট) টিপুন এবং সাজান sort

find /{us,va}r -type d \! -user root \! -empty -printf "%d %i %k %M %m %u %h/%f\n" | x.py | sort -k2,2n
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.