গ্রেপ - তালিকার ফাইলের নাম যেখানে মিল পাওয়া যায়


31

আমার একটি ডিরেক্টরিতে .html ফাইল রয়েছে। আমি প্রতিটি ফাইল সন্ধান করতে চাই এবং একটি প্যাটার্নের (এমডি 5) মেলাতে চাই। এগুলি সবই যথেষ্ট সহজ। সমস্যাটি হ'ল ম্যাচটি কোন ফাইলটিতে পাওয়া গেছে তা আমার জানা দরকার।

cat *.html | grep 75447A831E943724DD2DE9959E72EE31

ম্যাচটি পাওয়া যায় যেখানে কেবল HTML পৃষ্ঠার সামগ্রীটি ফেরত দেয় তবে এটি যে ফাইলটি খুঁজে পেয়েছিল তা আমাকে বলে না my আমার ম্যাচটি পাওয়া যায় সেখানে ফাইলের নামটি দেখানোর জন্য আমি কীভাবে গ্রেপ পেতে পারি?


প্রদত্ত পরামর্শটি আসলে কাজ করে না .... আমি যা পাই তা হ'ল 'স্ট্যান্ডার্ড ইনপুট' বিড়াল *। Html | গ্রেপ -i -H 1ee024007823cc0bfbefba98ba1e1f4c (স্ট্যান্ডার্ড ইনপুট): <html> <শিরোনাম << শিরোনাম
BeMy বন্ধু

4
আপনি বিন্দু মিস করছি। আপনার বিড়াল ব্যবহার করার দরকার নেই। বিড়াল গ্রেপকে পৃথক ফাইলের পার্থক্য থেকে বিরত করে।
মুরু

আপনি এই স্ট্যাক ওভারফ্লো পোস্ট দরকারী হতে পারে ।
পাবলো এ

উত্তর:


32
grep -H 75447A831E943724DD2DE9959E72EE31 *.html

-H, --with-filename
              Print the file name for each match. This is
              the default when there is more than one file
              to search.

3
যেমনটি বলা হয়েছে, এটি একাধিক ফাইলের জন্য ডিফল্ট, সুতরাং যতক্ষণ না একাধিক এইচটিএমএল ফাইল রয়েছে ততক্ষণ -Hপ্রয়োজনীয় নয়।
মারু

1
দুঃখিত আমার প্রশ্ন আপত্তিজনক ছিল। আমার বলা উচিত ছিলাম আমি এটির জন্য কিছুক্ষণ কাজ করছি এবং আমি বেশ কয়েকটি স্যুইচ ব্যবহার করেছি এবং মান পৃষ্ঠাটি পড়েছি যেখানে বলা হয়েছে এটি ডিফল্টরূপে ফাইলের নাম তালিকাভুক্ত করে .... তবে আমি যা পাই তা হ'ল (মানক ইনপুট) ) যেখানে এটি ফাইলের নাম তালিকাভুক্ত করবে।
BeMy বন্ধু

এবং কেবলমাত্র আমি -H সুইচ দিলে। আমি যদি ওপিতে কেবলমাত্র তালিকাভুক্ত হয়ে থাকে তবে তা কোনও ফাইলের নাম দেয় না।
BeMy বন্ধু

3
@BeMyFriend, সমস্যা catcatমানে কনকানেটেট। আপনি togheter সমস্ত ফাইল কনক্যাটেনেট যদি সামনে তাদের ক্ষণস্থায়ী grep, grepমাত্র এক বড় মান ইনপুট ফাইল দেখতে এবং করতে পারবে না (সঠিক অনুমান করছেন সংক্ষিপ্ত) আপনি একক ফাইল সম্পর্কে কোন তথ্য ফিরিয়ে দাও। দেখুন ?. সাইরাস, উত্তরে এর ব্যাখ্যা দেওয়ার কী আছে?
রমানো

ঠিক আছে, সমস্যাটি বিড়াল কমান্ড, তবে এর সমাধান কী হতে পারে?
জোসেফ ক্লিমুক

20

কোনও ডিরেক্টরিতে স্ট্রিং যুক্ত ফাইলগুলি সন্ধান করার জন্য আমি সর্বদা এটি ব্যবহার করি (যার অর্থ, কোনও উপ-সাব সাব ফোল্ডারকে অনুসরণ করে) grep -Ril "yoursearchtermhere"

  • R পুনরাবৃত্তভাবে অনুসন্ধান করা হয় (নিম্নলিখিত চিহ্নগুলি)
  • i এটি কে সংবেদনশীল করে তুলবে
  • l কেবলমাত্র ফাইলগুলির নাম তালিকাভুক্ত করা।

সুতরাং আপনার প্রশ্নের উত্তর grep -l '75447A831E943724DD2DE9959E72EE31' *.htmlদেবে কিন্তু আপনি কেবল grep -Ril '75447A831E943724DD2DE9959E72EE31'সেই স্ট্রিংটি অনুসন্ধান করতে পারেন, যেকোন সাবফোল্ডারে কোনও ফাইলের ক্ষেত্রে সংবেদনশীল না


ম্যাকোসের জন্য সর্বদা একটি ফাইল ডিএফ প্রয়োজন, এটি কোনও ওয়াইল্ডকার্ড হতে পারে। অন্যথায়, এটি ইনপুট ধরে নিয়েছে stdin( গ্রেপ: সতর্কতা: স্টার্ডিনের পুনরাবৃত্তি অনুসন্ধান , যাই হোক না কেন পুনরাবৃত্ত স্টিডিন ইনপুটটির অর্থ :-)। অন্য কথায়:grep -Ril 'texttofind' *
ভিল

grep -RiH 'pattern'ফাইলগুলির নাম এবং
ম্যাচ করা


2
grep -r -H 75447A831E943724DD2DE9959E72EE31 *.html | awk -F : ' { print $1 } '

বিকল্প

grep -r -l 75447A831E943724DD2DE9959E72EE31 *.html

উপরের কাজটি ফোল্ডার এবং সাবফোল্ডারগুলিতে পুনরাবৃত্তভাবে অনুসন্ধান করবে এবং ফাইলটির পাথ প্রিন্ট করবে ...


গ্রেপ-আর-এলই আমার জন্য একমাত্র কাজ করেছে।
জোসেফ ক্লিমুক

0

উত্তর সাইরাস পোস্ট করেছে একেবারে সঠিক এবং সঠিক উপায় টি এম সঙ্গে এটা করতে grepআমরা যদি শুধুমাত্র ফাইল বের করতে হবে । যখন ফাইলের নামের সাথে মিলে যাওয়া ফাইলের নামগুলিতে অতিরিক্ত পার্সিং বা অপারেশন করা দরকার তখন আমরা বিবৃতি whileসহ লুপটি ব্যবহার করতে পারি if। এখানে একটি উদাহরণ যেখানে ফাইলনামগুলির তালিকাটি ফাইল নামগুলির নিরাপদ বিশ্লেষণের জন্য খুব সাধারণভাবে ব্যবহৃত find+ whileকাঠামো থেকে আসে ।

find -type f -name "*.html" -print0 | while IFS= read -r -d '' filename
do
    if grep -q 'PATTERN' "$filename"
    then
        printf "%s found in %s\n" 'PATTERN' "$filename"
        # Here we can insert another command or function
        # to perform other operations on the filename
    fi
done

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