বলুন নামের সাথে ফাইল রয়েছে:
batman.c
debate.c
cricketbat.c
সার্চট্যাগ ব্যবহার করে এই সমস্ত ফাইলের তালিকা তৈরি করতে আমার কোন আদেশ এবং কীভাবে এটি ব্যবহার করা উচিত bat
?
বলুন নামের সাথে ফাইল রয়েছে:
batman.c
debate.c
cricketbat.c
সার্চট্যাগ ব্যবহার করে এই সমস্ত ফাইলের তালিকা তৈরি করতে আমার কোন আদেশ এবং কীভাবে এটি ব্যবহার করা উচিত bat
?
উত্তর:
bat
যে কোনও জায়গায় ফাইল সন্ধান করা হচ্ছে/path/to/folder
যার নাম রয়েছে তার ভিতরে যে কোনও ফাইল সন্ধান bat
করতে আপনি ব্যবহার করতে পারেন:
find /path/to/folder -name '*bat*'
আমি করেছি উদ্ধৃত অনুসন্ধান প্যাটার্ন *bat*
, কারণ যদি কোট বাদ দেওয়া হয়েছে এবং ফাইল মেলে *bat*
বর্তমান ডিরেক্টরির মধ্যে, শেল প্রসারিত হবে *bat*
তাদের মধ্যে তালিকায় এবং পাস যে করতে find
। তাহলে find
ঠিক কাজ করবে না। ( \*bat\*
এবং "*bat*"
এছাড়াও কাজ।)
আপনি বর্তমানে যে ফোল্ডারে রয়েছেন তা অনুসন্ধান করতে (যেমন, আপনি যে cd
সম্পাদনা করেছেন), .
যথারীতি ব্যবহার করুন :
find . -name '*bat*'
আপনার পুরো কম্পিউটারটি অনুসন্ধান করতে, ব্যবহার করুন/
। আপনার হোম ডিরেক্টরি অনুসন্ধান করতে ~
, বা আপনার বাড়ির ডিরেক্টরিটির পুরো নাম অনুসন্ধান করুন । ( শেলটি~
আপনার হোম ডিরেক্টরিটির সম্পূর্ণ যোগ্যতার পথে প্রসারিত হয়))
আপনি, কেস-insensitively অনুসন্ধান তাই ফাইল ধারণকারী করতে চান BAT
, bAt
এবং তাই ঘোষণা মেলানো হয়, ব্যবহার -iname
পরিবর্তে পরীক্ষা -name
পরীক্ষা:
find /path/to/folder -iname '*bat*'
আপনার সমস্ত ফাইল শেষ হয়ে গেছে আমি লক্ষ্য করেছি .c
। আপনি যদি কেবল সে জাতীয় ফাইলগুলি সন্ধান করতে চান তবে ব্যবহার করুন:
find /path/to/folder -name '*bat*.c'
আমি লক্ষ্য করেছি যে আপনার সমস্ত ফাইলের নাম প্রত্যক্ষের bat
পূর্ববর্তী অংশের একেবারে শুরুতে বা একেবারে শেষে রয়েছে .c
। আপনি যদি এই জাতীয় ফাইলগুলি মিলে এড়াতে চান তবে আপনি এটি embattled.c
ব্যবহার করতে পারেন:
find /path/to/folder -name '*bat.c' -o -name 'bat*.c'
-o
হয় বা অপারেটর।
কেবল নিয়মিত ফাইলগুলি অনুসন্ধান করতে - এবং ফোল্ডার, প্রতীকী লিঙ্ক এবং বিশেষ ডিভাইস নোড নয় - আপনি ব্যবহার করতে পারেন -type f
। এটি প্রায়শই প্রস্তাবিত এবং কখনও কখনও বেশ উপযুক্ত ... তবে আপনি যা চান তা প্রায়শই তা নয় , বিশেষত যদি আপনি find
নিজে আউটপুট পরীক্ষা করার উদ্দেশ্যে চালাচ্ছেন । যদি আপনার একটি প্রতীকী লিঙ্ক থাকে যা আপনার অনুসন্ধানের সাথে মিলে যায় তবে আপনি কি এটি সম্পর্কে জানতে চান না?
আপনি যদি নিয়মিত ফাইল এবং প্রতীকী লিঙ্ক উভয়ই সন্ধান করতে চান তবে আপনি ব্যবহার করতে পারেন:
find /path/to/folder -name '*bat*' \( -type f -o -type l \)
এটি -o
অপারেটর এবং গোষ্ঠীকরণের জন্য প্রথম বন্ধনীও ব্যবহার করে (যা উদ্ধৃত হওয়া আবশ্যক যাতে শেল তাদের সাথে বিশেষ ব্যবহার করে না; অন্যথায় আপনি একটি বাক্য গঠন ত্রুটি পাবেন)।
তবে ধরুন আপনি কেবল প্রতীকী লিঙ্কগুলি দেখতে চান যা শেষ পর্যন্ত একটি নিয়মিত ফাইলের দিকে নির্দেশ করে (এবং ডিরেক্টরিগুলি, ডিভাইস নোড ইত্যাদির ক্ষেত্রে প্রতীকী লিঙ্ক নয়)। এটি আসলে আরও সহজ: -xtype
পরিবর্তে ব্যবহার করুন -type
। প্রদত্ত যে আপনি পতাকা find
নিয়ে চলছেন না -L
, -xtype
একটি প্রতীকী লিঙ্কে লিঙ্কটি যে ফাইলটির দিকে নির্দেশ করে তা পরীক্ষা করে।
find /path/to/folder -name '*bat*' -xtype f
আপনার যদি কোনও ফাইলের সাথে অন্য একটি সিমলিংকের কাছে একটি সিমলিংক থাকে -xtype f
তবে এটি সরাসরি মিলবে যদিও এর প্রত্যক্ষ লক্ষ্যটি নিয়মিত ফাইলের পরিবর্তে অন্য একটি সিমলিংক। এটি প্রায় সবসময় আপনি যা চান তা হয়।
প্রায়শই লোকেরা মনে করে যে তারা চায় -type f
তবে সত্যই তারা চায় -xtype f
।
find
আপনি যদি একটি নির্দিষ্ট না করে তবে এর ডিফল্ট ক্রিয়া -print
। উপরে বর্ণিত সমস্ত কমান্ডগুলি -print
শেষে সমাপ্ত হওয়ার সাথে সমতুল্য ।
find
প্রায়শই পাওয়া ফাইলগুলির উপর ভিত্তি করে কমান্ড চালাতে ব্যবহৃত হয় - প্রায়শই, কমান্ডগুলি যে পরিবর্তন করে। তবে এছাড়াও অন্যান্য পদক্ষেপ রয়েছে যার উদ্দেশ্য ফলাফল প্রদর্শন করা -print
। বিশেষ আগ্রহ হ'ল -ls
:
find /path/to/folder -name '*bat*' -ls
এটি প্রতিটি ফাইলের উপর একাধিক-কলামের ফর্ম্যাটে বিশদ তথ্য দেয় যা আপনি চালিয়ে যা দেখবেন তার অনুরূপ (যদিও তেমন একরকম নয়) ।ls file
find
ফাইলগুলি আবিষ্কার করার জন্য এবং অন্যান্য উপায়গুলির জন্য আরও তথ্যের জন্য , দেখুন:
find
ম্যানুয়েল পৃষ্ঠা , প্রবেশযোগ্য অনলাইন বা চলমান দ্বারা man find
টার্মিনালে।find
, locate
এবং xargs
ইউটিলিটি।-xtype
পরামর্শ; সম্ভবত ls *bat*
এবং -maxdepth
/ mindepth
এছাড়াও উল্লেখযোগ্য।
ls
ইতিমধ্যে আচ্ছাদিত হিসাবে , আমি find
এখানে সঙ্গে পুনরাবৃত্তির ক্ষেত্রে ফোকাস । অবশ্যই, অ (বা কম) -র বিস্তৃত একটি উত্তর উত্তর-কিছু প্যাটার্ন ( ls
এবং এর find
সাথে -maxdepth
) মিলে যাওয়া ফাইলের নামের ক্রিয়াকলাপ তালিকাও দরকারী। আপনি যেমন একটি উত্তর পোস্ট করতে চাইতে পারেন!
সবচেয়ে সহজ উপায় চালানো
locate bat
এইভাবে আপনি ফাইলের নামের "ব্যাট" ধারণকারী ফাইলগুলির জন্য পুরো কম্পিউটারের মাধ্যমে অনুসন্ধান করতে পারেন
আপনার পিসিতে চালিত ফাইলগুলির তালিকাটি রিফ্রেশ করুন
updatedb
আপনি যখন সম্প্রতি নিজের অ্যাকাউন্টে নতুন ফাইল যুক্ত করেছেন তখন এই কমান্ডটি চালান
updatetdb
updatedb
সর্বশেষে ম্যানুয়ালি বা স্বয়ংক্রিয়ভাবে চালিত হওয়া সময়ের চেয়ে নতুন ) sudo updatedb
প্রথমে চালানো দরকার, হ্যাঁ।
bat
।
find /
হিসাবে locate
কোন ডেটাবেস থেকে অনুসন্ধান, যখন find
যাও recursively তালিকা /
এবং তারপর Regex সাথে মেলে।
টার্মিনালটি খুলুন এবং ডিরেক্টরিটি ডিরেক্টরিতে পরিবর্তন করুন যেখানে আপনি অনুসন্ধান শুরু করতে চান এবং তারপরে এই কমান্ডটি চালান:
find . -name "*bat*" -type f
.
বর্তমান ডিরেক্টরি থেকে অনুসন্ধান কমান্ড শুরু করে The স্ট্রিং মিলে যায় এবং কেস সংবেদনশীল। ( কেস অবশ হয়) শুধুমাত্র ফাইলের জন্য অনুসন্ধান।-name
bat
-iname
-type f
যদি ফাইলগুলি বর্তমান ডিরেক্টরিতে থাকে তবে ব্যবহার করুন:
$ ls *bat*
batgirl.c batman.c batwoman.c cricketbat.c
অথবা (সেগুলি লাইন ধরে রেখার জন্য):
$ ls -1 *bat*
batgirl.c
batman.c
batwoman.c
cricketbat.c
আপনি যদি এই ফাইলগুলির জন্য সিস্টেমটি অনুসন্ধান করতে চান তবে ব্যবহার করুন:
$ find / -name "*bat*"
/path/to/cricketbat.c
/path/to/batgirl.c
/path/to/batwoman.c
/path/to/batman.c
সংক্ষিপ্ত ফাইলের নামের সাথে মিলের জন্য বিকল্প বা কেস সংবেদনশীল ফাইলের নামের সাথে মেলে find
এমন -iname
বিকল্পের সাহায্যে আপনি কমান্ডটি ব্যবহার করতে চান -name
। এই দুটিই আপনাকে ওয়াইল্ডকার্ডের নাম ব্যবহার করতে দেবে। সুতরাং, "ব্যাট" রয়েছে এমন কোনও ফাইলের নাম খুঁজতে আপনি ব্যবহার করবেন:
find / -iname '*bat*'
অথবা
find / -name '*bat*'
এর *
অর্থ "যে কোনও অক্ষর (গুলি)", তাই অনুসন্ধান এর bat
আগে বা পরে কোনও অক্ষর সহ কোনও অক্ষর অনুসন্ধান করছে । /
রুট ডিরেক্টরি থেকে অনুসন্ধান করার যাও recursively, আপনি ব্যবহার করতে পারেন .
যা বর্তমান ডিরেক্টরি অথবা তুমি কোথা থেকে অনুসন্ধান করতে চান জন্য পরম পথ থেকে যাও recursively অনুসন্ধান করবে। লিনাক্স শেল স্ক্রিপ্টে রেজেক্স ব্যবহার করে কীভাবে ফাইলগুলি অনুসন্ধান করা যায় তা একবার দেখুন
-type f
, যা কেবল ডিরেক্টরি বাদ দিয়ে বেশি করে এবং ব্যবহারকারীরা যা চায় তা প্রায়শই হয় না ।
ভাল পুরানো ব্যবহার করুন find
।
find <path_for_search> -type f -iname "*bat*"
যেমন .:
% find . -type f -iname "*bat*"
./batgirl.c
./batwoman.c
./cricketbat.c
./batman.c
থেকে man find
:
-type c
File is of type c:
[..]
d directory
[..]
f regular file
[..]
-iname pattern
Like -name, but the match is case insensitive.