কীভাবে 2-নামের শর্তগুলিকে একত্রিত করবেন?


94

আমি এমন ফাইলগুলি অনুসন্ধান করতে চাই যা 2 -nameশর্তের সাথে মেলে না । আমি এটি এর মতো করতে পারি:

find /media/d/ -type f -size +50M ! -name "*deb" ! -name "*vmdk"

এবং এটির যথাযথ ফলাফল আসবে তবে আমি কি এই 2 শর্তটিতে বা কোনওভাবে যোগ দিতে পারি?

উত্তর:


46

আপনি এটিকে অবহেলা করেও এটি করতে পারেন -regex: -

 find ./ ! -regex  '.*\(deb\|vmdk\)$'

6
নোট যে -regexতুলনায় কম পোর্টেবল -name।
— jw013

145

হ্যা, তুমি পারো:

find /media/d/ -type f -size +50M ! \( -name "*deb" -o -name "*vmdk" \)

পসিক্স স্পেক থেকে ব্যাখ্যা :

! অভিব্যক্তি : একটি প্রাথমিক নেতিবাচক; অপরিচিত অপারেটর।

( অভিব্যক্তি ): অভিব্যক্তিটি সত্য হলে সত্য।

এক্সপ্রেশন -o অভিব্যক্তি : প্রাইমারিগুলির বিকল্প; ওআর অপারেটর। প্রথম অভিব্যক্তিটি সত্য হলে দ্বিতীয় প্রকাশটি মূল্যায়ন করা হবে না।

মনে রাখবেন যে \শেল দ্বারা মূল্যায়ন আটকাতে প্রথম বন্ধনী, উভয় প্রারম্ভিক এবং বন্ধ, একটি ব্যাকস্ল্যাশ ( ) দ্বারা উপস্থাপিত হয় ।


2
আপনি যদি ফলাফলগুলি -execবা অন্য কোনও ক্রিয়াকলাপটি করে থাকেন তবে পুরো মানদণ্ডটি findবন্ধুত্বের কথা মনে রাখবেন \( \), অন্যথায় -execকেবল সর্বশেষ- -orমানদণ্ডে প্রযোজ্য । তাদের সকলের সাথে কাজ করতে, তাদের প্রথম বন্ধনী যুক্ত করুন:find \( <criterion> -o <criterion> \) -exec <command>
— ভিক্টর সার্জিয়েনকো

25

আপনি সমাধানের কাছাকাছি ছিলেন:

find /media/d/ -type f -size +50M -and ! -name "*deb" -and ! -name "*vmdk"

আপনি নিম্নোক্ত লজিক অপারেটরগুলিকে যে কোনও অনুক্রমের সাথে একত্রিত করতে পারেন:

-a   -and      - operator AND
-o   -or       - operator OR
!              - operator NOT

6

আপনি নিয়মিত মত প্রকাশ করতে পারেন হিসাবে:

find /media/d -type f -size +50M ! -regex '\(.*deb\|.*vmdk\)'

ব্যাকস্ল্যাশ হ'ল পালানোর চরিত্র; .একটি একক চরিত্রের *সাথে মেলে এবং পূর্বের অক্ষরটি শূন্য বা আরও বেশি বারের সাথে .*মেলে যায় তাই এর অর্থ শূন্য বা আরও বেশি অক্ষরের সাথে মেলে।


1
একটি ব্যাখ্যা যুক্ত করা আপনার উত্তর আরও ভাল করবে।
— এনএন

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