একাধিক এক্সটেনশান দ্বারা ফিল্টার করা ফাইলগুলি সন্ধান করুন


52

এর জন্য সঠিক বাক্য গঠন কী:

find . -type f -name \*.\(shtml\|css\)

এটি কাজ করে তবে অযোগ্য leg

find . -type f -name \*.shtml > f.txt && find . -type f -name \*.css >> f.txt

কীভাবে একই কাজ করা যায় তবে কী কী স্ট্রোক কম হয়?

উত্তর:


75

লজিকাল অপারেটরগুলির সাথে আপনি বিভিন্ন অনুসন্ধান এক্সপ্রেশনকে একত্রিত করতে পারেন -orবা -andযাতে আপনার কেস হিসাবে লেখা যায়

find . -type f \( -name "*.shtml" -or -name "*.css" \)

এটিও দেখায় যে আপনি উদ্ধৃতি ব্যবহার করার সময় বিশেষ শেল অক্ষরগুলি এড়িয়ে চলার দরকার নেই।

সম্পাদন করা

যেহেতু ক্রিসের পরামর্শ অনুসারে প্রথম -orবন্ধনের -andমধ্যে -typeপ্রথম -nameঅংশের নাম বন্ধনীর মধ্যে অন্তর্ভুক্ত এবং তার চেয়ে কম অগ্রাধিকার রয়েছে ।


এটি "* .css" নামের ডিরেক্টরিগুলিও মুদ্রণ করবে।
টেডি

হুঁ, আপনার আপডেট হওয়া সংস্করণটির প্রথম বন্ধনীগুলি কিছুটা ভুল জায়গায় স্থান পেয়েছে। পৃথক প্রথম বন্ধনীগুলি পৃথক প্যারামিটার হিসাবে সন্ধান করতে হবে , সুতরাং তাদের চারপাশে ফাঁকা স্থান প্রয়োজন (`" .css ") a ফলাফল একটি একক স্ট্রিংয়ের মান হিসাবে; এটি (যেমন) । ' ). Second, the parentheses need to go around whole ‘primaries’ (the open parenthesis needs to be before .ssss ' ' -name` এর মতো, এটির এবং এর' অপারেন্ড 'এর মধ্যে নয়)।
ক্রিস জনসন


12

কেবলমাত্র ফাইল অন্তর্ভুক্ত করার জন্য আপনার প্রথম বন্ধনী তৈরি করতে হবে:

find . -type f \( -name "*.shtml" -o -name "*.css" \) -print

বোনাস : এটি পসিক্স-কমপ্লায়েন্ট সিনট্যাক্স।


4

আমি প্রায়শই নিজেকে আরও বেশি জটিল ফিল্টারগুলির জন্য egrep বা লম্বা পাইপ বা পার্ল ব্যবহার করে শেষ করতে দেখি:

find . -type f | egrep '\.(shtml|css)$'
find . -type f | perl -lne '/\.shtml|\.css|page\d+\.html$/ and print'

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

স্ট্যান্ডার্ড ক্যাভিয়েটটি অদ্ভুত ফাইল নামগুলির সাথে ফাইলগুলির জন্য এটি ব্যবহার না করা সম্পর্কে প্রয়োগ করে (যেমন নিউলাইনগুলি ধারণ করে)।


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