ডিরেক্টরিতে ডিরেক্টরি বাদ দিন


11

একটি ডিরেক্টরি ব্যবহার করে বাদ দিয়ে, প্রতিটি ফাইল এবং ডিরেক্টরি কীভাবে প্যাটার্নের সাথে মেলে find?

বলুন আমার কাছে নিম্নলিখিত ফাইল কাঠামো রয়েছে;

।
  foo বিন্যাস-অগ্রাহ্য আমাকে /
    foo.txt
  foo বিন্যাস-অগ্রাহ্য অভিমানী ব্যক্তি /
    foo.txt
  বার /
    foo.txt
    FOOBAR /
      bar.txt
      foofoo.txt

কীভাবে আমি নিম্নলিখিত আউটপুটটি পেতে পারি find:

./bar/foo.txt
./bar/foobar
./bar/foobar/foofoo.txt
./foo-exclude-me-not
./foo-exclude-me-not/foo.txt

আমি নিম্নলিখিত দুটি আদেশ ব্যবহার করার চেষ্টা করেছি:

অনুসন্ধান . -নাম 'foo- বাদ দিন-আমাকে' -প্রুনি -ও-নাম 'foo *'
অনুসন্ধান . -নাম 'foo *' \! -পথ './foo-excolve-me/*'

তবে দু'জনেই এটি ফিরিয়ে দেয়:

./bar/foo.txt
./bar/foobar
./bar/foobar/foofoo.txt
./foo-exclude-me # << this should be excluded
./foo-exclude-me-not
./foo-exclude-me-not/foo.txt

আমি কীভাবে foo-exclude-meডিরেক্টরিটি সঠিকভাবে বাদ দিতে পারি ?


এর foo-exclude-meপরিবর্তে ব্যবহার করার চেষ্টা করুন ./foo-exclude-me-printকমান্ডের শেষে যুক্ত করার চেষ্টা করুন ।
n0pe

@ ম্যাক্সম্যাকি নিখুঁত :)
টাইাইলো

এটা ঠিক করে দিয়েছে? কোনটি ঠিক আপনার পক্ষে কাজ করেছিল? আমি এটি একটি মন্তব্য পরিবর্তে একটি উত্তরে রাখতে পারেন।
n0pe

@ ম্যাক্সম্যাকি উভয় ব্যবহার করে -printএবং এর foo-exclude-meপরিবর্তে ./foo-exclude-me
টাইলো

দুর্দান্ত, দেখে মনে হচ্ছে গিলস আমাকে এতে মারধর করেছে :)
n0pe

উত্তর:


11
find . -name 'foo-exclude-me' -prune -o -name 'foo*' -print

না সহ -print, অন্তর্নিহিত ডিফল্ট ক্রিয়াটি প্রতিটি ম্যাচে, এমনকি ছাঁটাই করা প্রযোজ্য। সুস্পষ্টভাবে -printকেবলমাত্র নির্দিষ্ট শর্তে প্রযোজ্য, যা -name 'foo*'কেবলমাত্র অন্য শাখায় রয়েছে -name 'foo-exclude-me'

সাধারণভাবে বলতে গেলে, -printআপনি যখন পূর্বাভাসের সংমিশ্রণের চেয়ে আরও জটিল কিছু করছেন তখনই একটি স্পষ্ট ব্যবহার করুন ।

আপনার দ্বিতীয় চেষ্টাটি কার্যকর ! -path './foo-exclude-me/*'হয়নি কারণ ./foo-exclude-meমিলছে না ./foo-exclude-me/*(কোনও পিছনে নেই /)। যোগ করা ! -path ./foo-exclude-meকাজ করবে।


-2
-বাশ -৪.১ $ সন্ধান করুন। -exec ls -l l + -name 'a.out' -Pune -o -name '*' -exec rm -f {} + -exec ls -l}} +

-rw-R - r--। 1 ওড়দ্বা ডিবিএ 499 জানুয়ারী 19:30। / A.out
-rw-R - r--। 1 ওড়দ্বা ডিবিএ 499 জানুয়ারী 20:59 ./b.out
-rw-R - r--। 1 ওড়দ্বা ডিবিএ 499 জানুয়ারী 20:59 ./c.out
-rw-R - r--। 1 ওড়দ্বা ডিবিএ 499 জানুয়ারী 20:59 ./d.out

।
মোট 16
-rw-R - r--। 1 ওড়দ্বা ডিবিএ 499 জানুয়ারী 19:30:30 a.out
-rw-R - r--। 1 ওড়দ্বা ডিবিএ 499 জানুয়ারী 20:59 বি.আউট
-rw-R - r--। 1 ওড়দ্বা ডিবিএ 499 জানুয়ারী 20:59 c.out
-rw-R - r--। 1 ওড়দ্বা ডিবিএ 499 জানুয়ারী 20:59 d.out
rm: remove। 'অপসারণ করতে পারে না: এটি একটি ডিরেক্টরি
ls: ./b.out অ্যাক্সেস করতে পারবেন না: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
ls: ./d.out অ্যাক্সেস করতে পারবেন না: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
ls: ./c.out অ্যাক্সেস করতে পারে না: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
।
মোট 4
-rw-R - r--। 1 ওড়দ্বা ডিবিএ 499 জানুয়ারী 19:30:30 a.out


A.out এড়ানোর জন্য ছাঁটাই বিকল্পটি ব্যবহার করেছে এবং সূক্ষ্ম - art.s
212126

-pruneপ্রাসঙ্গিক কেন আপনি তা পুরোপুরি ব্যাখ্যা করবেন না । -pruneএটি find'অক্ষম করে দেওয়ার কারণ হিসাবে -print(যা ডিফল্টরূপে সক্ষম করা হয়েছে) এর মধ্যে সবচেয়ে
সংশ্লেষযোগ্য বিকল্পগুলির মধ্যে একটি

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