আমি কিছু ফাইলের ধরণ বাদে সমস্ত ফাইল গ্রেপ করতে চাই?


36

grepদু'ধরনের ফাইল টাইপ বাদে আমি কীভাবে প্রদত্ত ফোল্ডারগুলির মধ্যে পুনরাবৃত্তভাবে ফাইল করব ?

উদাহরণস্বরূপ, আমি আমার ওয়ার্কস্পেস ফোল্ডারের মধ্যে একটি স্ট্রিং খুঁজছি তবে এটি এসকিউএল ফাইলগুলির মধ্যে অনুসন্ধান শেষ করে সিরিয়ালযুক্ত স্ট্রিংগুলি উত্পন্ন করে।

সুতরাং এই ক্ষেত্রে, আমি grepএসকিএল ফাইলগুলি বাদ দিয়ে ওয়ার্কস্পেস ফোল্ডারে চাই ।

আমি যদি সম্ভব হয় তবে একটি ওয়ানলাইনারের সন্ধান করছি।


5
জেনে রাখুন যে লিনাক্স এবং ইউনিক্স এবং ইউনিক্স-এ-পছন্দগুলি আপনার পছন্দ মতো মনে হচ্ছে "ফাইল টাইপ" নেই " এটি কেবল কনভেনশনেই ফাইলের নামগুলিতে ".c" বা ".txt" বা ".sql" প্রত্যয় রয়েছে - সেই প্রত্যয়গুলি উইন্ডোজ-স্টাইলের "এক্সটেনশন" নয়, এসকিউএল বা পাঠ্য বা সি উত্স কোডটি লাইভের চেয়ে অনেক কম সূচক indic ফাইল ভিতরে।
ব্রুস এডিগার

উত্তর:


46

আপনার যদি জিএনইউ থাকে তবে grepআপনি --exclude=GLOBপছন্দ মতো বিকল্পটি ব্যবহার করতে পারেন

grep -r --exclude='*.sql' pattern dir/

1
কীভাবে একটি একক ফাইল বাদ দেবেন?


8

এটি আপনার পক্ষে এটি করবে এবং .sql এবং .txt ফাইলগুলি বাদ দেবে:

find /some/dir -type f ! -name '*\.sql' ! -name '*.txt' -print0 | xargs -0 grep 'foobar'

তবে এটির মতো শোনা যাচ্ছে যে আপনি যা করার চেষ্টা করছেন তার জন্য আক্ক একটি আরও ভাল সরঞ্জাম হবে:

ack -a --nosql 'foobar' /some/dir

দুঃখিত, আমি 'আক্ক' অংশটি দেখিনি এবং আমার উত্তরে এটি রেখেছি, যা এখন মুছে ফেলা হয়েছে।
সম্ভাব্য

অন্য একজন ব্যবহারকারী নোট করেছেন যাতে ack - a --nobinaryবাইনারি ফাইল রয়েছে
মাইকেল মরোজেক

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