লিনাক্সে কেবল ফাইলের নামগুলি দেখাতে আমি কীভাবে গ্রেপ ব্যবহার করতে পারি?


1067

আমি কীভাবে grepলিনাক্সে ফাইল-নামগুলি (কোনও লাইন মেলেনি) প্রদর্শনের জন্য ব্যবহার করতে পারি ?

আমি সাধারণত কিছু ব্যবহার করি:

find . -iname "*php" -exec grep -H myString {} \;

আমি কীভাবে কেবল ফাইল-নামগুলি (পাথ সহ) পেতে পারি, তবে মিলগুলি ছাড়াই? আমার কি ব্যবহার করতে হবে xargs? আমি আমার grepম্যান পেজে এটি করার কোনও উপায় দেখিনি ।


3
আপনার অর্থ, আপনি যে ফাইলের নাম চান কমপক্ষে একটি মিল আছে?
লিওনব্লাই

4
দুর্দান্ত প্রশ্ন। আমি আসলে ভিমে গ্রেপ দ্বারা ফিরিয়ে দেওয়া ফাইলগুলির একটি তালিকা খুলতে এটি ব্যবহার শুরু করেছি started vim $(grep -rl Something app/)
ডেভিড Tuite

1
আপনি গ্রেপ কমান্ড ব্যবহার করে ফাইলগুলি তালিকাবদ্ধ করতে পারবেন না, এটি মূলত কোনও ফাইল বা তালিকা থেকে পছন্দসই পাঠ্য আনতে ব্যবহৃত হয়। উদাহরণস্বরূপ, পিএস অক্স |
গ্রেপ 'আপ্ট

উত্তর:


1624

মানক বিকল্পটি grep -l(এটি একটি ছোট হাতের এল) এটি করতে পারে।

থেকে ইউনিক্স মান :

-l
    (The letter ell.) Write only the names of files containing selected
    lines to standard output. Pathnames are written once per file searched.
    If the standard input is searched, a pathname of (standard input) will
    be written, in the POSIX locale. In other locales, standard input may be
    replaced by something more appropriate in those locales.

-Hএই ক্ষেত্রে আপনারও দরকার নেই ।


37
এই বিকল্পের ডকুমেন্টেশন (প্রায়শই বেশিরভাগ ম্যান ফাইলগুলিতে) এতটাই অস্পষ্ট! পিএফএফ… আশ্চর্যরূপে মানুষ কীভাবে পাছায় ব্যথা হতে পারে।
MonsieurDart

1
- এইচ তারা নিজেরাই ম্যাচগুলি দেখায়। প্রশ্নটি কেবল ফাইল নামগুলির জন্য ছিল।
Hauke

@ হউক এবং আমার উত্তর ছিল - এল। আমি -H উল্লেখ করেছি কারণ প্রশ্নটিতে ব্যবহারকারীর কমান্ড -H অন্তর্ভুক্ত ছিল এবং যখন -l দেওয়া হয় তখন এটি অতিরিক্ত হয়।
র্যান্ডম 832

2
চমৎকার, আমি ব্যক্তিগতভাবে এটি অন্য পতাকাগুলির সাথে ব্যবহার করতে চাই grep -nrl "some text" .যখন সাবফোল্ডারগুলির একটি সেটটিতে পুনরাবৃত্তভাবে পাঠ্যের সন্ধান করতে চাই
ওপেনওনক

142

থেকে grep(1)মানুষ পৃষ্ঠা:

  -l, --files-with-matches
          Suppress  normal  output;  instead  print the name of each input
          file from which output would normally have  been  printed.   The
          scanning  will  stop  on  the  first match.  (-l is specified by
          POSIX.)

4
প্রথম ম্যাচে থামানো প্রয়োজনীয় এবং প্রকৃতি।
থমসন

7
ডকুমেন্টেশন এটিকে কিছুটা অস্পষ্ট করে তুলেছে। "স্ক্যানিংটি প্রথম ম্যাচে থামবে" - ইঙ্গিত দেয় যে সমস্ত ফাইলের নাম মুদ্রিত হবে, তবে ম্যাচিং শব্দের জন্য স্ক্যানিং প্রথম ঘটনাতেই থামবে।
TheMonkWhoSoldHisCode

2
@ বিশালপ: যেহেতু ঘটনাগুলি কোথায় তা আমরা যত্ন নিই না, কেবলমাত্র সেগুলি বিদ্যমান, তাই প্রতিটি ঘটনা প্রথম ঘটনার বাইরে অনুসন্ধান করার কোনও মানে নেই।
ইগনাসিও ওয়াজকেজ-আব্রামগুলি

17
@ ইগনাসিও ওয়াজকেজ-আব্রামগুলি ঠিকঠাকভাবে। নথির প্রথম ছাপ আপনাকে অনুভব করে যে এটি কেবলমাত্র প্রথম ফাইলটির ফাইলের নাম মুদ্রণ করবে। এটি বুঝতে আপনার সত্যিকারের কয়েকটি পাঠকের প্রয়োজন।
TheMonkWhoSoldHisCode

5
'বর্তমান ফাইলটির স্ক্যানিং প্রথম ম্যাচে থামবে।' অনেক পরিষ্কার হতে হবে।
দুঃখিতমিসিজ্যাকসন

37

একটি সাধারণ ফাইল অনুসন্ধানের জন্য আপনি গ্রেপ -lএবং -rবিকল্পগুলি ব্যবহার করতে পারেন :

grep -rl "mystring"

সমস্ত অনুসন্ধান গ্রেপ দ্বারা সম্পন্ন করা হয়। অবশ্যই, যদি আপনাকে অন্য কোনও প্যারামিটারে ফাইলগুলি নির্বাচন করতে হয় তবে সঠিক সমাধানটি খুঁজে বের করুন:

find . -iname "*.php" -execdir grep -l "mystring" {} +

execdirবিকল্প প্রতিটি ডিরেক্টরির প্রতি প্রতিটি grep কমান্ড প্রয়োগ তৈরী করে, এবং যোগসূত্র শুধুমাত্র একটি কমান্ডের মধ্যে ফাইলের নাম ( +)।


0

আপনার প্রশ্ন আমি কীভাবে ফাইলের নামগুলি পেতে পারি (পাথ সহ)

আপনার বাক্য গঠন উদাহরণ খুঁজে। -নাম "* পিএইচপি" - এক্সেক গ্রেপ-এইচ মাইস্ট্রিং {} \;

আমার কমান্ড পরামর্শ

sudo find /home -name *.php

আমার লিনাক্স ওএসে এই আদেশটি থেকে আউটপুট:

রচনা-নমুনা -3 / HTML / মেল / contact_me.php

আপনার যেমন পথের ফাইলের নাম প্রয়োজন, উপভোগ করুন!


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