কীভাবে 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.