তাদের পাঠ্যে একটি নির্দিষ্ট শব্দ যুক্ত ফাইলগুলি তালিকাভুক্ত করুন


30

আমি ফাইলগুলি পুনরাবৃত্তভাবে এবং অনন্যভাবে তালিকাবদ্ধ করতে চাই যা প্রদত্ত শব্দটি ধারণ করে।

উদাহরণ : 'চেক' শব্দের জন্য পরীক্ষা করা, আমি স্বাভাবিকভাবেই গ্রেপ করি

$ grep check * -R

তবে এই শব্দটির অনেকগুলি উপস্থিতি হওয়ায় আমি প্রচুর আউটপুট পাই get সুতরাং আমি কেবলমাত্র প্রদত্ত অনুসন্ধান শব্দটি ধারণ করে এমন ফাইলের নামগুলি তালিকাবদ্ধ করতে চাই। আমি অনুমান করি যে এখানে কিছু কৌশল আছে findএবং xargsএটি যথেষ্ট হবে, তবে নিশ্চিত নয়।

কোন ধারনা?

উত্তর:


39

নীচে হিসাবে নথিভুক্ত যা -lবা --files-with-matchesবিকল্প ব্যবহার করুন :

সাধারণ আউটপুট দমন; পরিবর্তে প্রতিটি ইনপুট ফাইলের নাম মুদ্রণ করুন যার থেকে আউটপুট সাধারণত মুদ্রিত হত। স্ক্যানিং প্রথম ম্যাচে থামবে। ( -lপসিক্স দ্বারা নির্দিষ্ট করা হয়।)

সুতরাং, উদাহরণস্বরূপ আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

$ grep check * -lR

এমএসওয়াইএস-তেও কাজ করে। গ্রেট!
কোস

2
আমি ব্যবহার করেছি grep -rl "text to find" "/usr/share"এবং এটি দুর্দান্ত কাজ করেছে!
শ্রুত 1

18
find . -type f -exec grep -l check {} +

ডিরেক্টরিগুলি অবতরণ করার সময় আপনি সম্ভবত সেই -Rবিকল্পটি ব্যবহার করতে চান না যা GNU এর আধুনিক সংস্করণগুলির সাথে grepসিমলিংকগুলি অনুসরণ করে। -rপরিবর্তে সেখানে বিকল্পটি ব্যবহার করুন যা সংস্করণ ২.১২ (এপ্রিল ২০১২) এর পরে আর চিহ্নগুলি অনুসরণ করে না।

যদি আপনার গ্রেপ জিএনইউ এক না হয়, বা সংস্করণ ২.১২ এর চেয়ে পুরনো হয় বা আপনার কোডটি অ-রক্তক্ষরণ-প্রান্ত-জিএনইউ সিস্টেমে পোর্টেবল করার প্রয়োজন হয় তবে findউপরের কমান্ডটি ব্যবহার করুন ।

অন্যথায়, আপনি এটি করতে পারেন:

grep -rl check .

ব্যবহার করবেন না *(যেহেতু এটি বর্তমান ডিরেক্টরিতে লুকানো ফাইলগুলি বাদ দেয় (এবং কেবলমাত্র বর্তমান ডিরেক্টরিতে) এবং যে ফাইলগুলির নাম ক এর সাথে শুরু হয় তাতে সমস্যা দেখা দেয় -), আর্গুমেন্টের পরে বিকল্পগুলি পাস করা এড়াতে হবে কারণ এটি নির্ভর করে কাজ করার গ্যারান্টিযুক্ত নয় পরিবেশ এবং পোর্টেবল নয়।


1

এটা চেষ্টা কর:

find . -type f | xargs grep -c check $1 | grep -v ":0"

grepপতাকা হিসাবে ...

-c এরপরে একটি ফাইলের নাম ফিরিয়ে দেবে: এবং একটি সংখ্যা নির্দেশ করে যে প্রদত্ত ফাইলে অনুসন্ধান স্ট্রিংটি কতবার প্রদর্শিত হবে।

-vপ্রথম grepঅনুসন্ধান থেকে আউটপুট নেবে , শূন্য ফলাফল সহ ফাইলগুলি ফিল্টার আউট করবে এবং শূন্য-ফলাফল ছাড়া কেবল ফাইলগুলি মুদ্রণ করবে।


যদি আপনার কাছে ফাইল (গুলি) থাকে (বা পরিচালক (আইস)) থাকে যার নাম থাকে তবে এটি একটি মিথ্যা নেতিবাচক হবে :0। এটা করা ভাল grep -v ':0$'। এমনকি যেগুলি পাতনামগুলিতে চূড়ান্তভাবে প্রবেশ করবে যেগুলিতে নিউলাইন (গুলি) রয়েছে।
স্কট

0

গ্রেপ-রিন "হোয়াটটোফাইন্ড" অবস্থানটিওএফআইন্ড nd

যেমন p গ্রেপ-রিন "বিহান"।

পুনরাবৃত্তভাবে ফাইলের নাম এবং সংশ্লিষ্ট লাইনগুলিতে "ভিহান" রয়েছে এমনগুলি অনুসন্ধান এবং তালিকাবদ্ধ করবে, "।" বর্তমান ডিরেক্টরি বোঝায়।


0
find . -type f | grep "keyword" *

বর্তমান ডিরেক্টরি অনুসন্ধান করুন। মূল থেকে অনুসন্ধান করতে, এর /পরিবর্তে নির্দিষ্ট করুন.


0

grep -lR "text-to-find" <where-to-find> ভাল কাজ করে।

যেমন, grep -lR "NAVIGATE" .যেখানে আমরা শব্দ খুঁজে NAVIGATEমধ্যে .বর্তমান ডিরেক্টরির মধ্যে।


-2
 grep -rli trim \` find . -name *.q \` 

.qকীওয়ার্ড সহ ফাইলগুলির তালিকা দিনtrim

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