linux - ওয়াইল্ডকার্ড মিলিংয়ের উপর ভিত্তি করে বর্তমান এবং সাবফোল্ডারের সমস্ত ফাইলকে আমি কিভাবে পুনরুদ্ধার করতে পারি?




shell (9)

fd

ক্ষেত্রে, find খুব ধীর, fd ইউটিলিটি চেষ্টা করুন - একটি সহজ এবং দ্রুততম রুস্টের লিখিত find বিকল্প।

বাক্য গঠন:

fd PATTERN

ডেমো:

হোমপেজ: fd

ওয়াইল্ডকার্ড মিলিংয়ের উপর ভিত্তি করে বর্তমান এবং সাবফোল্ডারের সমস্ত ফাইলকে আমি কিভাবে পুনরুদ্ধার করতে পারি?


Grep মধ্যে পাইপিং প্রায়ই আরো সুবিধাজনক হয়; এটা আপনি ইচ্ছাকৃতভাবে ওয়াইল্ডকার্ড মিলে জন্য নিয়মিত এক্সপ্রেশন পূর্ণ ক্ষমতা দেয়।

উদাহরণস্বরূপ, ফাইলের নামের ক্ষেত্রে অসম্পূর্ণ স্ট্রিং "foo" সহ সমস্ত ফাইল খুঁজে বের করতে:

~$ find . -print | grep -i foo

একটি প্যাটার্ন মেলে যে সব ফাইল খুঁজে পাবেন:

find . -name "*foo"

যাইহোক, যদি আপনি একটি ছবি চান:

tree -P "*foo"

আশাকরি এটা সাহায্য করবে!


তুমি ব্যবহার করতে পার:

# find . -type f  -name 'text_for_search'

আপনি যদি REGX ব্যবহার- -iname ব্যবহার করতে চান

# find . -type f  -iname 'text_for_search'

নীচে কমান্ড কোন ফাইল অনুসন্ধান করতে সাহায্য করে

1) কেস নির্বিশেষে
2) অনুমতি ছাড়া ফোল্ডার বাদে ফলাফল
3) রুট থেকে অথবা আপনার পছন্দের পথ থেকে অনুসন্ধান। পরিবর্তন / আপনার পছন্দ পথ সঙ্গে।

বাক্য গঠন :
find-name '2>> 1 | grep -v "অনুমতি অস্বীকার"

উদাহরণ

খুঁজুন / -নাম 'সি * .xml' 2> & 1 | grep -v "অনুমতি অস্বীকার"

find / -iname '*C*.xml'   2>&1 | grep -v "Permission denied"

পুনরাবৃত্তি ফাইল জন্য অনুসন্ধান করার ডিফল্ট উপায়, এবং অধিকাংশ ক্ষেত্রে পাওয়া যায়

find . -name "filepattern"

এটি আপনার অবস্থান যেখানে বর্তমান ডিরেক্টরি থেকে ফাইলের নাম বা প্যাটার্ন জন্য recursive traversing শুরু হয়। অনুসন্ধানের কমান্ড দিয়ে, আপনি ওয়াইল্ডকার্ডগুলি এবং বিভিন্ন সুইচগুলি ব্যবহার করতে পারেন বিকল্পগুলির সম্পূর্ণ তালিকা দেখতে টাইপ করুন

man find

অথবা যদি ম্যান পৃষ্ঠাগুলি আপনার সিস্টেমে উপলব্ধ না হয়

find --help

যাইহোক, আরো আধুনিক এবং দ্রুত সরঞ্জাম রয়েছে যা আপনার সম্পূর্ণ ফাইল সিস্টেমকে ট্রান্সফার করছে এবং আপনার ফাইলগুলিকে ইন্ডেক্স করছে, এমন একটি সাধারণ টুলটি সনাক্ত বা স্লোক / ম্লোকেট হয়, এটি ইনস্টল করার জন্য আপনার OS এর ম্যানুয়ালটি পরীক্ষা করা উচিত এবং এটি একবার ইনস্টলেশনের জন্য ডাটাবেস শুরু করতে হবে, যদি স্ক্রিপ্ট ইনস্টল করা আপনার জন্য এটি না করে তবে এটি টাইপ করে নিজে করা যেতে পারে

sudo updatedb

এবং, কিছু নির্দিষ্ট ফাইল টাইপ জন্য এটি ব্যবহার করার জন্য

locate filename

অথবা, বর্তমান ডিরেক্টরির মধ্যে থেকে ফাইল নাম বা প্যাটার্ন সন্ধান করতে, আপনি টাইপ করতে পারেন:

 pwd | xargs -n 1 -I {} locate "filepattern"

এটি ফাইলগুলির তার ডাটাবেসটি সন্ধান করবে এবং দ্রুত টাইপ করা প্যাটার্নগুলি মুদ্রণ করবে যা আপনি টাইপ করেছেন। অবস্থানের সম্পূর্ণ তালিকা দেখতে, টাইপ করুন: locate --help বা man locate

অতিরিক্তভাবে আপনি ক্রন কাজের মাধ্যমে নির্ধারিত সময়ে এটির ডাটাবেস আপডেট করতে সনাক্ত করতে পারেন, তাই 1AM এ ডিবি আপডেট করে এমন নমুনা ক্রোনের মতো দেখতে হবে:

0 1 * * * updatedb

এই cron কাজগুলি রুট দ্বারা কনফিগার করতে হবে, যেহেতু আপডেটবিকে সম্পূর্ণ ফাইল সিস্টেম ট্র্যাভেল করতে রুট বিশেষাধিকার প্রয়োজন।


যদি আপনার শেল একটি নতুন গ্লোবিং বিকল্প সমর্থন করে (এটি দ্বারা সক্ষম করা যেতে পারে: shopt -s globstar ), আপনি ব্যবহার করতে পারেন:

echo **/*foo*

recursively কোনো ফাইল বা ফোল্ডার খুঁজে পেতে। এটি ব্যাশ 4, zsh এবং একই শেল দ্বারা সমর্থিত।

ব্যক্তিগতভাবে আমি এই শেল ফাংশন সংজ্ঞায়িত পেয়েছেন:

f() { find . -name "*$1*"; }

দ্রষ্টব্য: উপরের লাইনটিকে সরাসরি শেলে আটকানো বা আপনার ব্যবহারকারীর ~/.bashrc ফাইলে যোগ করা যেতে পারে।

তারপর আমি টাইপ করে কোন ফাইল সন্ধান করতে পারি:

f some_name

অন্যথায় আপনি একটি সাধারণ সিনট্যাক্স সহ একটি fd ইউটিলিটি ব্যবহার করতে পারেন, যেমন fd pattern


যে জন্য find ব্যবহার করুন:

find . -name "foo*"

একটি শুরু বিন্দু প্রয়োজন, এবং . (বিন্দু) বর্তমান ডিরেক্টরি পয়েন্ট।


find -L . -name "foo*"

কয়েকটি ক্ষেত্রে, আমি সিম্বলিক ডিরেক্টরি লিঙ্ক পরিচালনা করার জন্য -ল পরামিতি প্রয়োজন। ডিফল্ট প্রতীক লিঙ্ক উপেক্ষা করা হয়। এই ক্ষেত্রে এটি বেশ বিভ্রান্তিকর ছিল যেহেতু আমি একটি ডিরেক্টরিকে সাব-ডিরেক্টরিে পরিবর্তন করব এবং প্যাটার্নের সাথে মিলিত ফাইলটি দেখি তবে ফাইল নামটি ফেরত পাঠাও না। ব্যবহার করে -L যে সমস্যা সমাধান করে। খুঁজে পাওয়ার জন্য সিম্বলিক লিঙ্ক অপশন -PL -H






shell