আমি কীভাবে কেবল কোনও ডিরেক্টরিতে সনাক্ত করতে পারি


10

এটি "ড্রপনট" এর বিভিন্ন উপ-ডিরেক্টরিের অধীনে থাকা একটি বিশাল সংখ্যক ফাইলের সন্ধান করে

$ locate Dropnot

আমি কি কেবল ডিরেক্টরি অবস্থানের সাথে সন্ধান করতে পারি locate? (কোন ডিরেক্টরি "ড্রপনট" রয়েছে)

সুতরাং যদি Dropnotএটি হয় /home/me/, তবে এটিই কেবল ফিরে আসবে।

যদি তা হয় তবে সবচেয়ে সহজ / সংক্ষিপ্ততম উপায় কী?

অগ্রাধিকার হিসাবে একটি পতাকা বা প্রতীক মাধ্যমে পাইপ আউট এবং এটি জন্য গ্রেপ, ইত্যাদি পরিবর্তে, তবে আমি বিকল্প হিসাবে কিছু নিতে চাই।

লাইনের শেষের জন্য কিছু ধরণের ড্রপনট Maybe (তবে কাজ করেনি)।

উত্তর:


5

locateনির্বাচিত ধরণের ফাইল (ডিরেক্টরি হিসাবে) সন্ধানের জন্য ব্যবহার করার কোনও বিকল্প নেই তবে Dropnot$শেষ হওয়া লাইনগুলি অনুসন্ধান করতে আপনি আপনার প্রশ্ন থেকে বাক্য গঠন ব্যবহার করতে পারেন Dropnot। তার জন্য আপনাকে -eপসিক্স নিয়মিত এক্সপ্রেশন চালু করতে সনাক্ত করতে বিকল্পটি ব্যবহার করতে হবে ।

এই ক্ষেত্রে আপনার ব্যবহার করা উচিত:

locate -e Dropnot$

আপনার কাছে সনাক্ত করার সংস্করণটি কী তা গুরুত্বপূর্ণ। আমার সিস্টেমে (জেন্টু লিনাক্স) আমার সুরক্ষিত অবস্থান রয়েছে:

$ locate --version
Secure Locate 3.1 - Released March 7, 2006

এর উত্তর --basenameথেকে কোনও বিকল্প নেই uther। এই বিকল্পটি ফাইন্ডুইলস প্যাকেজ থেকে জিএনইউ লোকেট দ্বারা সরবরাহ করা হয়েছে:

$ ./locate --version
locate (GNU findutils) 4.4.2

আপনি যদি জিএনইউ অবস্থানের সাথে রেজিপেক্স ব্যবহার করতে চান তবে -rপরিবর্তে আপনার সুইচ ব্যবহার করা উচিত -e


1
-eবিকল্প না only print entries for currently existing files?
ফুক্লভ

10

আমি mlocateইনস্টল করেছি। এটি রেডহ্যাট দ্বারা বিতরণ করা ডিফল্ট, সুতরাং এটি ফেডোরা, আরএইচইএল, সেন্টোস-এ থাকবে। থেকেman 1 locate

-b, --basename
       Match  only  the  base  name  against the specified patterns. This 
       is the opposite of --wholename.

সুতরাং আপনি যদি চালনা করেন তবে locate -b '\Dropknot'এটি কেবল সেই স্ট্রিং সহ ফাইল বা ডিরেক্টরিগুলির প্রতিবেদন করবে।

Because \ is a globbing character, this disables the implicit replacement 
of NAME by *NAME*.

locate -b /Dropnotকাজ করেছেন
মাইকেল ডুরান্ট

4

জিএনইউ সনাক্তকরণের সাথে (অন্যান্য সনাক্তকরণের প্রয়োগগুলি আলাদা হতে পারে):

locate '*/Dropnot'
locate Dropnot | grep '/Dropnot$'

যখন আর্গুমেন্টে কোনও ওয়াইল্ডকার্ড নেই, তখন locateএকটি স্ট্রিং হিসাবে নির্দিষ্ট অনুসন্ধান শব্দ থাকা একটি পাথ অনুসন্ধান করে। যখন আর্গুমেন্টটি শেল প্যাটার্নে এক বা একাধিক ওয়াইল্ডকার্ড অক্ষরযুক্ত থাকে, তখন locateসম্পূর্ণ ম্যাচের সন্ধান করে। আপনি যদি /Dropnotশেষে আউটপুট দিতে না চান :

locate -0 '*/Dropnot' | xargs -0 -n1 dirname
locate Dropnot | sed -n 's:/Dropnot$::p'

0

আপনি যদি রেডহ্যাটটিতে থাকেন তবে আপনি সম্ভবত সুরক্ষিত লোকেট ইনস্টল না করে মলোকট ইনস্টল করেছেন। সেক্ষেত্রে কোনও বিকল্প বিকল্প নেই এবং আপনাকে বেসিক নিয়মিত এক্সপ্রেশন ব্যবহার করে অনুসন্ধান করতে -r বা --regexp ব্যবহার করতে হবে।


0

স্ল্যাকওয়্যার slocateডিফল্টরূপে ব্যবহার করে, এতে বিকল্পের সাথে একটি রেজেেক্স অনুসন্ধান রয়েছে r :

locate -r '/Dropnot$'

নামের ডিরেক্টরি অনুসন্ধান করবে Dropnot

এই জন্য যেমন অনুসন্ধান করবে সংখ্যাযুক্ত -only Dropnotডিরেক্টরি (Dropnot1, Dropnot2, ইত্যাদি):

locate -r '/Dropnot[[:digit:]]\+$'

0

কেন কেউ এ জাতীয় কিছু প্রস্তাব করেনি তা জানেন না:

for i in $(locate MYDIR); do [ -d "$i" ] && echo $i; done

এটি কেবল অনুসন্ধানের স্ট্রিংগুলির একটি ডিরেক্টরি কিনা তা পরীক্ষা করে এটি মুদ্রণ করে

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