পুনরাবৃত্তিযোগ্য ফাইল তালিকার গভীরতা কীভাবে সীমাবদ্ধ করবেন?


346

লিনাক্সে পুনরাবৃত্ত ফাইল তালিকার গভীরতা সীমাবদ্ধ করার কোনও উপায় আছে কি?

এই মুহুর্তে আমি যে আদেশটি ব্যবহার করছি তা হ'ল:

ls -laR > dirlist.txt

তবে আমার প্রায় 200 টি ডিরেক্টরি রয়েছে এবং তাদের প্রত্যেকেরই 10 টি ডিরেক্টরি রয়েছে। সুতরাং এটি ঠিক অনেক দীর্ঘ সময় নিতে চলেছে এবং প্রচুর সিস্টেমের সংস্থানগুলিতে জড়িয়ে পড়ে।

আমি যে বিষয়ে আগ্রহী তা হ'ল প্রথম স্তরের উপ-ডিরেক্টরিগুলির মালিকানা এবং অনুমতি সম্পর্কিত তথ্য:

drwxr-xr-x 14 root   root  1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk  
drwxr--r-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/htdocs  
drwxr--r-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/cgi-bin  
drwxr-xr-x 14 root   root  1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk  
drwxr-xrwx 14 proftp root  1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/htdocs  
drwxr-xrwx 14 proftp root  1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/cgi-bin  
drwxr-xr-x 14 root   root  1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk  
drwxr-xr-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/htdocs  
drwxr-xr-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/cgi-bin  
drwxr-xr-x 14 root   root  1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk  
drwxr-xr-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/htdocs
drwxr-xr-- 14 jon    root  1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/cgi-bin

সম্পাদনা করুন:

আদেশের চূড়ান্ত পছন্দ:

find -maxdepth 2 -type d -ls >dirlist

3
তুমিও কি এরকম কিছু করতে পার ls -la /var/www/vhosts/*?
কেভিনও

উত্তর:


494

এর -maxdepthপতাকাটি চেকআউট করুনfind

find . -maxdepth 1 -type d -exec ls -ld "{}" \;

এখানে আমি সর্বোচ্চ স্তরের গভীরতা হিসাবে 1 ব্যবহার করেছি, এর -type dঅর্থ কেবলমাত্র ডিরেক্টরিগুলি খুঁজে পাওয়া যায় যা এর পরে ls -ldদীর্ঘ বিন্যাসে সামগ্রীগুলির তালিকাবদ্ধ করে।


2
যেহেতু ওপি ডিরেক্টরিগুলির নিজের অনুমতি জানতে চায় তাই আপনার -dবিকল্পটি যুক্ত করা উচিত ls
পিটার ভ্যান ডের হেইজডেন

@ পিটার ভ্যান ডের হাইজডেন: আমি findতার মূল সমস্যাটি সমাধান করার জন্য এই অংশটি লিখেছি । যাইহোক ধন্যবাদ আমি এটি যুক্ত করছি।
আলবার্তো জ্যাকাগেনি

3
আমি -print0এবং ব্যবহার xargs -0অনেক। উদাহরণ:find . -maxdepth 1 -type d -print0 | xargs -0 ls -d
ক্রিস কে

2
ওহ হ্যাঁ, অবশ্যই এটি ভুল জেনে গেছে, এটি 6 বছর আগে হলেও হয়নি: ডি আমি ইতিমধ্যে স্ট্যাকওভারফ্লো . com/a/25618630/57095 তে মন্তব্য করেছি যে এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
আলবার্তো জ্যাকাগনি

আহ আহ ম্যাক্সডেপথ, গভীরতার বিকল্প আছে কি?
আলেকজান্ডার মিলস

95

findএর বিকল্পগুলি ব্যবহার করুন

আসলে /bin/lsপ্রয়োজনের কোন নির্বাহী নেই ;

সন্ধানের একটি বিকল্প রয়েছে যা কেবল এটি করে:

find . -maxdepth 2 -type d -ls

আপনার আগ্রহী কেবলমাত্র একটি মাত্র সাবডিরেক্টরিজটি দেখতে, -mindepthএকই স্তরে যুক্ত করুন -maxdepth:

find . -mindepth 2 -maxdepth 2 -type d -ls


আউটপুট বিন্যাস ব্যবহার করুন

প্রদর্শিত বিবরণগুলি পৃথক হওয়া উচিত, -printfকাস্টম ফর্ম্যাটে কোনও ফাইল সম্পর্কে কোনও বিবরণ প্রদর্শন করতে পারে ; প্রতীকী অনুমতি এবং ফাইলটির মালিকের নাম দেখাতে, এর -printfসাথে %Mএবং সাথে ব্যবহার %uকরুন format

আমি পরে লক্ষ্য করেছি আপনি পুরো মালিকানা সম্পর্কিত তথ্য চান, যার মধ্যে গ্রুপটি অন্তর্ভুক্ত। ব্যবহার করুন %gসিম্বলিক নামের জন্য বিন্যাসে, অথবা %G(এছাড়াও মত গ্রুপ আইডির জন্য %Uসাংখ্যিক ব্যবহারকারী আইডি জন্য)

find . -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'

এটি কেবলমাত্র সঠিক ফাইলগুলির জন্য আপনার প্রয়োজনীয় বিশদ সরবরাহ করা উচিত।

আমি একটি উদাহরণ দেব যা ব্যবহারকারী এবং গোষ্ঠীর জন্য ভিন্ন ভিন্ন মান দেখায়:

$ sudo find /tmp -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'
drwx------ www-data  www-data /tmp/user/33
drwx------ octopussy root     /tmp/user/126
drwx------ root      root     /tmp/user/0
drwx------ siegel    root     /tmp/user/1000
drwxrwxrwt root      root     /tmp/systemd-[...].service-HRUQmm/tmp

(পঠনযোগ্যতার জন্য সম্পাদিত: অভিযুক্ত, শেষ লাইনটি সংক্ষিপ্ত করে)


পারফরম্যান্স নোট

যদিও মৃত্যুদন্ড কার্যকর করার সময়টি এই ধরণের আদেশের জন্য বেশিরভাগ ক্ষেত্রে অপ্রাসঙ্গিক, কর্মক্ষমতা বৃদ্ধি এখানে এটিকে নির্দেশ করার মতো করে তুলনামূলক যথেষ্ট:

আমরা কেবল প্রতিটি নামের জন্য একটি নতুন প্রক্রিয়া তৈরি করে সংরক্ষণ করি না - একটি বিশাল কাজ - তথ্যটি পড়ার প্রয়োজন নেই, যেমনটি findইতিমধ্যে এটি জানে।


9
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, আমার চেয়ে অনেক ভাল।
আলবার্তো জ্যাকগাগনি

1
@ আলবার্তোজ্যাকাগনি আমার ধারণা আমি দ্রুত কাজ করার জন্য সংক্ষিপ্ত উত্তর পছন্দ করি।
anddero

65

tree -L 2 -u -g -p -d

গভীরতা 2 (-L 2) পর্যন্ত চমত্কার ফর্ম্যাটে ডিরেক্টরি ট্রি প্রিন্ট করে। মুদ্রণ ব্যবহারকারী (-u) এবং গোষ্ঠী (-জি) এবং অনুমতি (-p)। কেবল ডিরেক্টরিগুলি (-d) মুদ্রণ করুন। গাছ অন্যান্য দরকারী বিকল্প অনেক আছে।


12
গাছ প্রেম হয়। গাছ জীবন হয়।
জোসফ্রো

সহজভাবে tree -L 2 xxx/বা tree -L 2 -d xxx/কিছু ক্ষেত্রে যথেষ্ট।
এরিক ওয়াং

1

আমি যে বিষয়ে আগ্রহী তা হ'ল প্রথম স্তরের উপ-ডিরেক্টরিগুলির মালিকানা এবং অনুমতি সম্পর্কিত তথ্য।

আমার মাছ খেলে আমি একটি সহজ সমাধান পেয়েছি যা আপনার প্রয়োজনের সাথে পুরোপুরি ফিট করে।

ll `ls`

অথবা

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