বাশে আমি .php|.html|.jsকেস-সংবেদনশীল স্ট্রিংযুক্ত প্রতিটি ধরণের ফাইলের জন্য ফাইলের নাম (এবং ফাইলের পথে) ফেরত দিতে চাই"document.cookie" | "setcookie"
আমি যে কিভাবে করতে হবে?
বাশে আমি .php|.html|.jsকেস-সংবেদনশীল স্ট্রিংযুক্ত প্রতিটি ধরণের ফাইলের জন্য ফাইলের নাম (এবং ফাইলের পথে) ফেরত দিতে চাই"document.cookie" | "setcookie"
আমি যে কিভাবে করতে হবে?
উত্তর:
egrep -ir --include=*.{php,html,js} "(document.cookie|setcookie)" .
rপতাকা (অনুসন্ধান সাবডিরেক্টরি) যাও recursively অনুসন্ধান মানে। iপতাকা ক্ষেত্রে অসংবেদী মানে।
আপনি যদি কেবল ফাইলের নামগুলি l(ছোট হাতের Lপতাকা) পতাকাটি যুক্ত করতে চান :
egrep -lir --include=*.{php,html,js} "(document.cookie|setcookie)" .
grep -E ... >egrep ...
grep: (error|fail): No such file or directoryউবুন্টু ডেস্কটপ 16 এ ত্রুটি পেয়েছি ; কোন ইঙ্গিত?
--include=\*.{php,html,js}
এরকম কিছু চেষ্টা করুন grep -r -n -i --include="*.html *.php *.js" searchstrinhere .
-iএটি ঘটনাটিকে সংবেদনহীন করে তোলে
.শেষ মানে আপনি আপনার বর্তমান ডিরেক্টরি থেকে শুরু করতে চান, এই যে কোনো ডিরেক্টরির প্রতিস্থাপিত যেতে পারে।
-rমানে recursively এই না, ডান ডিরেক্টরি গাছটা
-nমিলের জন্য লাইন সংখ্যা ছাপে।
--includeআপনাকে ফাইলের নাম, এক্সটেনশন যোগ করতে দেয়। ওয়াইল্ডকার্ড গ্রহণ করা হয়েছে
আরও তথ্যের জন্য দেখুন: http://www.gnu.org/software/grep/
-lবিকল্পটি ব্যবহার করুন (কেবলমাত্র ফাইলের সাথে মেলে এমন ফাইলগুলি মুদ্রণ করুন)-n
findতাদের এবং grepস্ট্রিংয়ের জন্য:
এটি নিয়মিত প্রকাশের জন্য আপনার 3 প্রকারের সমস্ত ফাইল / স্টার্টিং / পাথ এবং গ্রেপের সন্ধান করবে '(document\.cookie|setcookie)'। কেবল পাঠযোগ্যতার জন্য ব্যাকস্ল্যাশ সহ 2 টি লাইনের বিভক্ত করুন ...
find /starting/path -type f -name "*.php" -o -name "*.html" -o -name "*.js" | \
xargs egrep -i '(document\.cookie|setcookie)'
-exec grep -l 'sth' {} \;
# egrep -ir --include=file.foo "(foo|bar)" /dirমিচেল বারকোভস্কি ~ 500 গিগাবাইট ওয়েইগ ডিরেক্টরিতে এই ভাবে দ্রুত 5 বা 8 বারের বেশি ।
grepবা এ্যাকের জন্য সম্ভবত একটি নিখুঁত কাজের মতো মনে হচ্ছে
বা এই দুর্দান্ত নির্মাণ:
find . -type f \( -name *.php -o -name *.html -o -name *.js \) -exec grep "document.cookie\|setcookie" /dev/null {} \;
-exec grep...আমার xargsপদ্ধতির চেয়ে +1 ব্যবহার করা আরও ভাল কারণ এটি ফাইলের নামগুলিতে ফাঁকা পড়ে না।
find . -type f -print0 | xargs -0 -I {} grep "search_string" {}। অবশ্যই, অন্যান্য বিকল্পগুলি পাশাপাশি যুক্ত করা যেতে পারে।
আরও একটি বিকল্প অন্তর্ভুক্ত করতে আপনি এটি ব্যবহার করতে পারেন:
find "/starting/path" -type f -regextype posix-extended -regex "^.*\.(php|html|js)$" -exec grep -EH '(document\.cookie|setcookie)' {} \;
কোথায়:
-regextype posix-extended বলে find কি Regex ধরনের আশা-regex "^.*\.(php|html|js)$"বলে findRegex নিজেই আবশ্যক ম্যাচ ফাইলগুলির নাম-exec grep -EH '(document\.cookie|setcookie)' {} \;বিকল্পটি এবং এটি খুঁজে পাওয়া প্রতিটি ফাইলের findমধ্যে সুনির্দিষ্ট কমান্ডটি (তার বিকল্পগুলি এবং আর্গুমেন্ট সহ) চালাতে বলেছে যেখানে এই কমান্ডটিতে ফাইলের পথটি কোথায় প্রদর্শিত হবে তা উপস্থাপন করে।-exec\;{}
যখন
E বিকল্প বলে grep বর্ধিত রেজেক্স ব্যবহার করতে (প্রথম বন্ধনী সমর্থন করার জন্য) এবং ...Hবিকল্পটি grepম্যাচের আগে ফাইল পাথগুলি মুদ্রণ করতে বলে ।এবং এটি প্রদত্ত, যদি আপনি কেবল ফাইলের পাথ চান তবে আপনি এটি ব্যবহার করতে পারেন:
find "/starting/path" -type f -regextype posix-extended -regex "^.*\.(php|html|js)$" -exec grep -EH '(document\.cookie|setcookie)' {} \; | sed -r 's/(^.*):.*$/\1/' | sort -u
কোথায়
|[পাইপ] findএর পরের কমান্ডের আউটপুট প্রেরণ করুন (যা sedতখন হয়sort )r বিকল্প বলে sed এক্সটেন্ডেড রেজেক্স ব্যবহার করতে ।s/HI/BYE/ বলে sed "বিদায়" এবং "হাই" এর প্রতি মাসের প্রথম সংঘটন (প্রতি লাইন) প্রতিস্থাপন করতে ...s/(^.*):.*$/\1/এটি রেজেক্সকে প্রতিস্থাপন করতে বলে (^.*):.*$(যার অর্থ একটি গোষ্ঠী [অন্তর্ভুক্ত জিনিসগুলি ()] সমস্ত কিছু অন্তর্ভুক্ত] [ .*= এক বা একাধিক কোনও চরিত্রের সাথে] রেখার শুরু থেকে [ ^] 'প্রথম' অবধি: ' শেষে ' অবধি কিছু না হওয়া পর্যন্ত লাইন [ $]) প্রথম দ্বারা গ্রুপ [\1 প্রতিস্থাপনকৃত রেজেক্সের ] ।uসদৃশ এন্ট্রিগুলি অপসারণ করতে বাছাই করে ((চ্ছিক sort -uহিসাবে গ্রহণ করুন )।... সবচেয়ে মার্জিত উপায় হতে দূরে from যেমনটি আমি বলেছি, আমার উদ্দেশ্য সম্ভাবনার পরিধি বাড়ানো (এবং আপনি যে কোনও সরঞ্জামগুলি ব্যবহার করতে পারেন সে সম্পর্কে আরও সম্পূর্ণ ব্যাখ্যা দেওয়া)।