ফোল্ডারগুলি কীভাবে বাদ দেবেন এবং ফাইন্ড কমান্ডের সাহায্যে অনুসন্ধান থেকে অনুসন্ধান করবেন?


10

আমি একটি স্ক্রিপ্ট কার্যকর করতে চেয়েছিলাম যা একটি এলোমেলো ডিরেক্টরি পথ খুঁজে বের করে:

find / -type d | shuf -n1 

দুর্ভাগ্যক্রমে আমি নির্দিষ্ট ডিরেক্টরিতে প্রবেশ নিষেধ সম্পর্কে ত্রুটি বার্তা পাই।

আমি কীভাবে সন্ধান থেকে কোনও ডিরেক্টরি বাদ দিতে পারি?

উত্তর:


13

নির্দিষ্ট পাথগুলি বাদ দিতে, লিনাক্সে:

find / -path /sys -prune -o -path /proc -prune -o -type d

আরেকটি পদ্ধতি হল findবিভিন্ন ফাইল সিস্টেমের অধীনে পুনরাবৃত্তি না করতে বলা ।

find / -xdev -type d

এছাড়াও আপনি ব্যবহার করতে পারে চিহ্নিতকরণ ফাইলের নাম এর একটি ডেটাবেস ক্যোয়ারীতে (সাধারণত রাত্রিকালীন আপডেট, এছাড়াও আপনি নিজে ব্যবহার আপডেট পারে updatedb) লাইভ সিস্টেমের পরিবর্তে।

locate '*' | shuf -n 1

দুর্দান্ত, সংক্ষিপ্ত এবং অন্তর্দৃষ্টিপূর্ণ। / -xdev -type d নিজেই কাজ করে তবে সন্ধান করুন / -xdev -type d | shuf -n 1 ত্রুটি বার্তা প্রদর্শন করে।
আবদুল আল হাজরেড

1
@ আবদুলআলহ্যাজার্ড আপনি কি বার্তা বলেন নি তবে আমি অনুমান করছি যে তারা "অনুমতি অস্বীকার" ত্রুটিযুক্ত। উভয় ক্ষেত্রেই রুট হিসাবে কমান্ড চালাতে বা শুধু তাদের stderr হবে পাঠিয়ে ত্রুটি উপেক্ষা: find / -xdev -type d 2>/dev/null
টেরডন

1
আপনি ঠিক find / \( -path /sys -o -path /proc \) -prune -o -type dকি করতে পারেন নি আপনি যদি আরও বেশি /dev/tmp
ডায়ার

6

জিএনইউর সাহায্যে আপনি রেজেেক্স বিকল্পগুলিও ব্যবহার করতে পারেন, যেমন:

find / -regextype posix-extended -regex "/(sys|srv|proc)" -prune -o -type d

এটাই সর্বোত্তম পন্থা, এখন পর্যন্ত (রেন্ট: সুতরাং এমন একটি gnu অপশন রয়েছে যা Gnu লিনাক্সের মতো অন্য কোনও ওএসের মতো ব্যবহার করতে সক্ষম / ব্যবহারযোগ্য করে তোলে যা শিট্টি / প্রোক বাস্তবায়ন নেই ;-)
ফ্লোরিয়ান হিগল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.