এসকে দিয়ে সমস্ত ফাইল অনুসন্ধান করুন


14

আমি কীভাবে বর্তমান ডিরেক্টরিতে সমস্ত ফাইল (বাইনারি সহ) ackv2 দিয়ে অনুসন্ধান করতে পারি ?

আমি করার মতো একই কাজটি করতে চাই ack 'foo' **, তবে কেবল একটি পতাকা দিয়ে, তাই যদি আমি যুক্ত না করে একটি নির্দিষ্ট ডিরেক্টরিতে সমস্ত ফাইল অনুসন্ধান করতে চাই তবে এটি কাজ করে **


ack 'foo'এবং এর মধ্যে পার্থক্য ack 'foo' **:

$ mkdir test && cd test
$ printf '\x00\x01foo1\x00' > test1
$ printf 'foo2' > test2
$ ack 'foo'
test2
1:foo2
$ ack 'foo' **
test1
1:foo1

test2
1:foo2

আপনি গ্রেপের পরিবর্তে এর জন্য আক্ক ব্যবহার করতে চান কেন?
অ্যান্ডি লেস্টার

1
অ্যান্ডিলেস্টার আমি কেবল ভেবেছিলাম যে ackএটি সবসময় চেয়ে ভাল grep। আমি ভৃল ছিলাম :).
Tyilo

উত্তর:


6

ডিফল্টরূপে, অ্যাক বর্তমান ডিরেক্টরি নীচে থাকা সমস্ত নন-বাইনারি ফাইলগুলিতে একটি প্যাটার্ন অনুসন্ধান করে।

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

grep -ar 'foo' .

সিমলিংকের সাথে এর কোনও যোগসূত্র নেই। এটি বাইনারি ফাইলের সাথে করতে হবে!
টাইলো

@ টাইলো: আমি আমার উত্তরটি পরিবর্তন করেছি।

13

আপনি যখন কোনও ফাইলের নাম অ্যাককে পাস না করেন, এটি অ-স্বীকৃত বাইনারি ফাইলগুলি বাদ দেয় এমন একটি বিল্ট-ইন ডিফল্ট ফাইলে সেট করে। আপনি যদি ফাইলের নাম পাস করেন তবে এটি আপনার পাস করা সমস্ত ফাইল অনুসন্ধান করে। এটি ack fooএবং এর মধ্যে পার্থক্য ব্যাখ্যা করে ack foo **

আক্ক ঘ

Ack 1.x এ, -aআক্ককে এমন ফাইলগুলি এড়িয়ে চলতে না বলার জন্য পতাকা ব্যবহার করুন যার ধরণটি এটি চিনে না।

আপনি যদি এই পতাকাটি না চান তবে আপনি একটি উপনাম তৈরি করতে পারেন: alias ack='ack -a'আপনার ~/.bashrcবা এর মধ্যে লাইন যুক্ত করুন ~/.zshrc। আপনি যদি এই উপনামটি সেট আপ করেন এবং ackবিকল্প ছাড়াই কল করতে চান , কল করুন \ack(ব্যাকস্ল্যাশ ওরফে প্রসারকে অক্ষম করে)। স্ক্রিপ্টগুলি ওরফে দ্বারা প্রভাবিত হয় না, কেবল ইন্টারেক্টিভ শেল।

বিকল্পভাবে, আপনি -aবিকল্পটি যুক্ত করতে পারেন ~/.ackrc

বাইনারি ফাইলগুলির ম্যাচগুলি "বাইনারি ফাইল টেস্ট 1 ম্যাচ" হিসাবে তালিকাভুক্ত হবে। আককে নিজে পরিবর্তন না করে এই আচরণটি অক্ষম করার কোনও উপায় নেই (কমপক্ষে একটি প্লাগইন যুক্ত করা)।

ack 2

Ack 2.0 এ, -aবিকল্পটি সরানো হয়েছে। এর পরিবর্তে আপনি যা করতে পারেন তা হ'ল এমন একটি প্রকারের সংজ্ঞা দেওয়া যা সমস্ত ফাইলের সাথে মেলে এবং -kএসকে সেই ধরণের সমস্ত ফাইল অন্তর্ভুক্ত করার জন্য বিকল্পটি ব্যবহার করুন । নোট করুন যে ফাইল প্রকারগুলি একটি অনির্দেশ্য ক্রমে প্রক্রিয়াজাত করা হয়, এর জন্য বাইনারি ধরণের একটি এলোমেলো সেটগুলি সাধারণ প্রকারের পরিবর্তে সাধারণ হিসাবে প্রসেস করা হবে।

ack --type-set='all:match:.*' -k foo

এইভাবে ম্যাচগুলি এমন ফাইলগুলির জন্যও মুদ্রিত হয় যা অন্যথায় বাইনারি দেখায়। উপরের মত, আপনি এই বিকল্পগুলি একটি উপাধিতে বা আপনার সাথে যুক্ত করতে পারেন .ackrc


1
এটি দুর্দান্ত লুক্কায়িত, @ গিলস।
অ্যান্ডি লেস্টার

অ্যান্ডিলেস্টার, কেন -a বিকল্পটি সরানো হয়েছে? "এটি কারণ" প্রত্যুত্তরে আসলে ব্যাখ্যা করে না যে আমি কেন অপরিজ্ঞাত ফাইলের প্রকারগুলি অনুসন্ধান করতে পারি না।
ইয়ান দানেনডাল

1.x এর -a আচরণ, সমস্ত অজানা পাঠ্য ফাইল অনুসন্ধান করার জন্য, এখন 2.0 তে ডিফল্ট।
অ্যান্ডি লেস্টার

2
অদ্ভুত, আমার একটি
মিনিডেড জেএস

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