উত্তর:
তার জন্য অনুসন্ধান ব্যবহার করুন :
find . -name "foo*"
find
একটি সূচনা পয়েন্ট প্রয়োজন, এবং .
(ডট) বর্তমান ডিরেক্টরিতে পয়েন্ট।
find . foo*
করেন foo*
তবে এটি প্রসারিত হবে এবং এটি অনুসন্ধান করতে পেরিয়ে যাবে।
" "
পুনরাবৃত্ত অনুসন্ধানের জন্য প্রয়োজনীয় যে স্ট্রেসিং প্রয়োজনীয়।
find . -name "foo*" 2>/dev/null
গ্রাইপের মধ্যে পাইপ পাইপ করা প্রায়শই বেশি সুবিধাজনক; এটি আপনাকে স্বেচ্ছাসেবী ওয়াইল্ডকার্ড মিলের জন্য নিয়মিত এক্সপ্রেশনগুলির সম্পূর্ণ শক্তি দেয়।
উদাহরণস্বরূপ, ফাইলের নামের ক্ষেত্রে সংবেদনশীল স্ট্রিং "foo" সহ সমস্ত ফাইল সন্ধান করতে:
~$ find . -print | grep -i foo
find
এছাড়াও আছে -iname
, -regex
এবং -iregex
তাই বংশীধ্বনিতুল্য, কেস-অবশ ওয়াইল্ডকার্ড, Regex, এবং কেস-অবশ Regex মিলের জন্য পতাকার grep
অপ্রয়োজনীয়।
find
কমান্ড নিয়ে আসে না যা এই বিকল্পগুলি সমর্থন করে। কখনও কখনও grep
একমাত্র বিকল্প হয়ে ওঠে।
find
একটি প্যাটার্নের সাথে মেলে এমন সমস্ত ফাইল খুঁজে পাবেন:
find . -name "*foo"
তবে আপনি যদি ছবি চান:
tree -P "*foo"
আশাকরি এটা সাহায্য করবে!
brew install tree
ম্যাক ওএসএক্স ব্যবহারকারীদের জন্য apt-get
find -L . -name "foo*"
কয়েকটি ক্ষেত্রে, প্রতীকী ডিরেক্টরি লিঙ্কগুলি পরিচালনা করতে আমার -L পরামিতি প্রয়োজন। ডিফল্ট দ্বারা প্রতীকী লিঙ্কগুলি উপেক্ষা করা হয়। এই ক্ষেত্রে এটি বেশ বিভ্রান্তিকর ছিল কারণ আমি ডিরেক্টরিটি একটি উপ-ডিরেক্টরিতে পরিবর্তন করতে এবং ফাইলটি প্যাটার্নের সাথে মেলে দেখি কিন্তু ফাইলের নামটি ফিরে পাবে না find -L ব্যবহারের ফলে সমস্যার সমাধান হয়। সন্ধানের জন্য প্রতীকী লিঙ্ক বিকল্পগুলি হ'ল -পি-এল-এইচ
যদি আপনার শেলটি একটি নতুন গ্লোব্বিং বিকল্পটি সমর্থন করে (এর দ্বারা সক্ষম করা যেতে পারে shopt -s globstar
), আপনি ব্যবহার করতে পারেন:
echo **/*foo*
পুনরাবৃত্তভাবে কোনও ফাইল বা ফোল্ডার সন্ধান করতে। এটি বাশ 4, zsh এবং অনুরূপ শেল দ্বারা সমর্থিত।
ব্যক্তিগতভাবে আমি এই শেল ফাংশনটি সংজ্ঞায়িত করেছি:
f() { find . -name "*$1*"; }
দ্রষ্টব্য: উপরের লাইনটি সরাসরি শেলতে আটকানো যায় বা আপনার ব্যবহারকারীর ~/.bashrc
ফাইলে যুক্ত করা যায় ।
তারপরে আমি টাইপ করে যে কোনও ফাইল সন্ধান করতে পারি:
f some_name
বিকল্পভাবে আপনি একটি সাধারণ সিনট্যাক্স সহ কোনও fd
ইউটিলিটি ব্যবহার করতে পারেন , যেমন fd pattern
।
shopt -s globstar
কমান্ড দ্বারা বর্ধিত গ্লোববিং সক্রিয় করতে হবে । এটি বাশ, zsh এবং অনুরূপ শেলগুলিতে সমর্থিত।
bash-3.2$ shopt -s globstar
দেয়bash: shopt: globstar: invalid shell option name
fd
ক্ষেত্রে, find
খুব ধীর গতির, fd
ইউটিলিটি চেষ্টা করুন - find
মরচে লিখিত একটি সহজ এবং দ্রুত বিকল্প ।
বাক্য গঠন:
fd PATTERN
ডেমো:
হোমপেজ: https://github.com/sharkdp/fd
asciicast2vector
এটি ব্যবহার করা যেতে পারে।
find <directory_path> -type f -name "<wildcard-match>"
ওয়াইল্ডকার্ড-ম্যাচে আপনি যে স্ট্রিংটি মেলতে চান তা প্রদান করতে পারেন উদাহরণস্বরূপ * .c (সমস্ত সি ফাইলের জন্য)
তুমি ব্যবহার করতে পার:
# find . -type f -name 'text_for_search'
আপনি চাইলে আরইজিএক্স ব্যবহার করতে পারেন -iname
# find . -type f -iname 'text_for_search'
পুনরাবৃত্তকারী ফাইল অনুসন্ধান করার জন্য ডিফল্ট উপায় এবং বেশিরভাগ ক্ষেত্রেই উপলভ্য
find . -name "filepattern"
আপনি যে অবস্থানে রয়েছেন সেখানকার ডিরেক্টরি থেকে ফাইল নাম বা প্যাটার্নের জন্য এটি পুনরাবৃত্ত ট্র্যাভার্সিং শুরু করে। ফাইন্ড কমান্ডের সাহায্যে বিকল্পগুলির পুরো তালিকা দেখতে টাইপ করুন, আপনি ওয়াইল্ডকার্ড এবং বিভিন্ন স্যুইচ ব্যবহার করতে পারেন
man find
অথবা যদি ম্যান পেজগুলি আপনার সিস্টেমে উপলব্ধ না হয়
find --help
যাইহোক, আরও আধুনিক এবং দ্রুত সরঞ্জামগুলি রয়েছে তারপরে সন্ধান করুন যা আপনার পুরো ফাইল সিস্টেমকে অনুসরণ করছে এবং আপনার ফাইলগুলি সূচীকরণ করছে, এই জাতীয় একটি সাধারণ সরঞ্জাম হ'ল সনাক্ত বা স্লোক / এমলোকেট, এটি আপনাকে কীভাবে ইনস্টল করতে হবে সে সম্পর্কে আপনার ওএসের ম্যানুয়াল পরীক্ষা করা উচিত এবং এটি একবারে এটি ইনস্টল করা ডেটাবেস আরম্ভ করা প্রয়োজন, ইনস্টল স্ক্রিপ্ট আপনার জন্য এটি না করে, এটি টাইপ করে ম্যানুয়ালি করা যেতে পারে
sudo updatedb
এবং এটি কোনও নির্দিষ্ট ফাইলের সন্ধানের জন্য ব্যবহার করতে
locate filename
বা, বর্তমান ডিরেক্টরি থেকে ফাইলের নাম বা প্যাটার সন্ধান করতে, আপনি টাইপ করতে পারেন:
pwd | xargs -n 1 -I {} locate "filepattern"
এটি এর ফাইলগুলির ডাটাবেসগুলির সন্ধান করবে এবং আপনার টাইপ করা প্যাটার্নের সাথে মেলে এমন পথের নামগুলি দ্রুত মুদ্রণ করবে। সনাক্তকরণের বিকল্পগুলির সম্পূর্ণ তালিকা দেখতে, টাইপ করুন:
locate --help
বাman locate
অতিরিক্ত হিসাবে আপনি ক্রোন জবের মাধ্যমে নির্ধারিত সময়ে এটির ডেটাবেস আপডেট করার জন্য অবস্থানটি কনফিগার করতে পারেন, তাই নমুনা ক্রোন যা 1am এ ডিবি আপডেট করে তা দেখতে হবে:
0 1 * * * updatedb
এই ক্রোন জবগুলি রুট দ্বারা কনফিগার করা দরকার, যেহেতু আপডেটডবগুলিকে পুরো ফাইল সিস্টেমটি অতিক্রম করার জন্য মূল সুবিধার দরকার হয়।
আমি অবাক হয়ে দেখেছি যে আমরা যখন পুনরাবৃত্তি করতে যাচ্ছি তখন অবস্থানটি খুব বেশি ব্যবহৃত হয় না।
আমি বর্তমানের আগ্রহের ফোল্ডারে ফাইলগুলির তালিকা পেতে প্রথমে একটি "PWD" সনাক্ত করব এবং তারপরে আমি যেমন খুশি তে গ্রেপগুলি চালাব।
locate "$PWD" | grep -P <pattern>
অবশ্যই, এটি ধরে নেওয়া হচ্ছে যে আপডেটবিড করা হয়ে গেছে এবং সূচি পর্যায়ক্রমে আপডেট হয়। এটি অনুসন্ধান চালানো এবং গাছের নীচে যেতে জিজ্ঞাসা করার চেয়ে ফাইলগুলি অনুসন্ধানের এটি আরও দ্রুততর উপায়। সম্পূর্ণতার জন্য এটি উল্লেখ করা। গাছটি খুব ভারী না হলে সন্ধানের ব্যবহারের বিরুদ্ধে কিছুই নেই।
locate "$PWD*.mp4"
কেবল মনে করিয়ে দেওয়ার জন্য যে আপনিgrep
নীচে কমান্ড যেকোন ফাইল অনুসন্ধান করতে সহায়তা করে
) 1) ক্ষেত্রে
2) ফলাফল ছাড়াই ফোল্ডার বাদ দিয়ে
3) আপনার পছন্দসই মূল থেকে বা পথ থেকে অনুসন্ধান করা। আপনার পছন্দের পথটি পরিবর্তন করুন / করুন।
সিনট্যাক্স:
সন্ধান করুন-নাম '' 2> & 1 | grep -v "অনুমতি অস্বীকার"
উদাহরণ
/-নাম 'সি * .xML' 2> & 1 | সন্ধান করুন grep -v "অনুমতি অস্বীকার"
find / -iname '*C*.xml' 2>&1 | grep -v "Permission denied"
find / -iname '*C*.xml' 2>/dev/null
আপনি যদি ওয়াইল্ডকার্ডের সাহায্যে বিশেষ ফাইল অনুসন্ধান করতে চান তবে আপনি নিম্নলিখিত কোড ব্যবহার করতে পারেন:
find . -type f -name "*.conf"
মনে করুন, আপনি এখান থেকে প্রতিটি .conf ফাইল অনুসন্ধান করতে চান:
.
এর অর্থ অনুসন্ধান এখান থেকে শুরু হয়েছে (বর্তমান স্থান) এর
-type
অর্থ অনুসন্ধান ফাইলের ধরণ যা এখানে ফাইল (চ)।
-name
এর অর্থ হল আপনি * .conf নামের ফাইল অনুসন্ধান করতে চান ।
ব্যবহার
find path/to/dir -name "*.ext1" -o -name "*.ext2"
ব্যাখ্যা
find
পুনরাবৃত্তি করে।-o
অর্থ দাঁড়ায় -or
। সুতরাং উপরের অর্থ এই ওয়াইল্ডকার্ড বা এটির জন্য অনুসন্ধান করুন। আপনার যদি কেবল একটি প্যাটার্ন থাকে তবে প্রয়োজন নেই-o
।