"টাইপ ডি" থেকে এই / বর্তমান / ডট ফোল্ডারটি কীভাবে বাদ দেবেন?


186
find . -type d

কিছু সূচনা পয়েন্টের নীচে সমস্ত ডিরেক্টরি খুঁজে পেতে ব্যবহার করা যেতে পারে। তবে এটি বর্তমান ডিরেক্টরিটিও ( .) প্রদান করে যা অনাকাঙ্ক্ষিত হতে পারে। কীভাবে বাদ দেওয়া যায়?

উত্তর:


193

পসিক্স 7 সমাধান :

find . ! -path . -type d

এই বিশেষ ক্ষেত্রে ( .) জন্য, mindepthসমাধানের চেয়ে গল্ফগুলি ভাল (24 বনাম 26 অক্ষর), যদিও এটি সম্ভবত কারণটি টাইপ করা কিছুটা কঠিন !

অন্যান্য ডিরেক্টরি বাদ দিতে, এটি কম ভাল গল্ফ হবে এবং DRYness জন্য একটি পরিবর্তনশীল প্রয়োজন:

D="long_name"
find "$D" ! -path "$D" -type d

আমার সিদ্ধান্ত গাছ !এবং এর মধ্যে -mindepth:

  • লিপি? !বহনযোগ্যতার জন্য ব্যবহার করুন ।
  • জিএনইউতে ইন্টারেক্টিভ সেশন?
    • বাদ দাও .? একটি মুদ্রা নিক্ষেপ।
    • বাদ দাও long_name? ব্যবহার -mindepth

আপনার যদি একাধিক পাথকে বাদ দিতে find /path/ ! -path "/path/first" ! -path "/path/second"হয় তবে কেবল এটিই কি একমাত্র পথ?
ভিনসেন্ট ডি স্মেট

2
@ ভিনসেন্টডেমমেট আপনি কি কেবল সেই পথগুলি বাদ দিতে চান, না আসলে এগুলিতে পুনরাবৃত্তি করতে চান না? যদি কেবল পাথ থাকে তবে আপনি find / ! -regex '/\(a\|b\)/.*'গ্রেপের মাধ্যমে পাইপ ব্যবহার করতে পারেন বা আরও সহজভাবে করতে পারেন । না recurse করতে, উপরে খুব অদক্ষ হবে এবং আপনি ব্যবহার করা উচিত -prune: stackoverflow.com/questions/1489277/...
সিরো Santilli郝海东冠状病六四事件法轮功

আমার সমস্যাটি নিম্নরূপ ছিল: আমি 1 সাব ডিরেক্টরি বাদ দিয়ে ডিরেক্টরিগুলির মধ্যে সমস্ত কিছু পুনরাবৃত্তভাবে মুছতে চাইছিলাম। আমি ব্যবহার করছিলেন findসঙ্গে grepডিরেক্টরি বাদ দেওয়ার কিন্তু পেরেন্ট ডাইরেক্টরি এখনও ছিল যার ফলে সবকিছু যাহাই হউক না কেন মুছে ফেলা হবে।
ভিনসেন্ট ডি স্মেট

@VincentDeSmet আমি সরাসরি সমাধান সঙ্গে দেখতে পাচ্ছি না find, আপনি উপশব্দের জন্য চেক করতে হবে চাই: stackoverflow.com/questions/17959317/... কিন্তু লুপ এটি পরিচালনা করতে একটি ব্যাশ :-)
সিরো Santilli郝海东冠状病六四事件法轮功

আপনি \!নিরাপদে পাশে থাকতে সম্ভবত উদ্দীপনা চর ( ) এড়িয়ে যেতে চান । আমার মেশিনের সমস্ত উদাহরণ man findএটি পালিয়ে গেছে তাই দেখে মনে হচ্ছে এটি সম্ভবত একটি ভাল ধারণা ™ সম্পাদনা করুন - সবেমাত্র এটি লক্ষ্য করা গেছে এমনকি স্পষ্টভাবে বলেছেন:! expr True if expr is false. This character will also usually need protection from interpretation by the shell.
অ্যাড্রিয়ান গন্টার

199

পরামিতি findদ্বারা কেবল পুনরাবৃত্তির গভীরতা নিয়ন্ত্রণ করা যায় -maxdepthনা, সংশ্লিষ্ট -mindepthপরামিতি ব্যবহার করে গভীরতাটি "শীর্ষ" থেকেও সীমাবদ্ধ করা যায় । সুতরাং আসলে যা প্রয়োজন তা হ'ল:

find . -mindepth 1 -type d

5
গনুহ উপর কাজ করে এটি, কিন্তু দুর্ভাগ্যবশত করার জন্য একটি GNU এক্সটেনশান POSIX 7 খোঁজ , এবং এমনকি lsb POSIX শেল ইউটিলিটি ব্যবহার (না গনুহ বাড়ানো বেশী)
সিরো Santilli郝海东冠状病六四事件法轮功

6
এটি আমার পক্ষে কাজ করেছে। যথা:find . -mindepth 1 -maxdepth 1 -type d ...
racl101

19

আমি find ./* <...>যখন প্রথম স্তরের ডটফাইলগুলি উপেক্ষা করার বিষয়ে কিছু মনে করি না তখন ( *গ্লোব বাশ-এ ডিফল্টরূপে এটি মেলে না - শপটি বিল্টিনে 'ডটগ্লোব' বিকল্পটি দেখুন: https://www.gnu.org/software/bash /manual/html_node/The-Shopt- বুলেটিন এইচটিএমএল )।

গ্রহন টিএমপি # সন্ধান করুন।
।
./screen
./screen/.testfile2
./.X11-unix
./.ICE-unix
./tmux-0
./tmux-0/default
গ্রহন টিএমপি # সন্ধান করুন।
./screen
./screen/.testfile2
./tmux-0
./tmux-0/default

অবগতির জন্য। -execবিকল্প সহ এই কৌশলটি ব্যবহার করবেন না । উদাহরণস্বরূপ, যদি আপনি চেষ্টা করেন তবে আপনি find dir/* -type d -exec rmdir {} \;ত্রুটিগুলি দেখতে পাবেন।
plhn

আপনি ভুল করেছেন, অথবা সম্ভবত ভুল ধারণা দিয়েছেন v এই আদেশটি ঠিক কাজ করবে। আপনি যদি ত্রুটিগুলি দেখছেন, তবে তারা rmdirসম্ভবত আসছে এবং আপনাকে বলছে যে ডিরেক্টরিগুলি খালি নয় কারণ ডিরেক্টরিগুলি findএকটি গভীরতার সাথে প্রথম অনুসন্ধান করবে, যা তাদের সন্তানের আগে পিতামাতাকে দেখায়।
মিলোস ইভানোভিচ

2
দ্রষ্টব্য: "প্রথম স্তরের ডটফাইল উপেক্ষা করা" এর অর্থ সমস্ত লুকানো ফাইল / ডিরেক্টরি বাদ দেওয়া।
জোনাথন এইচ

2

ঠিক আছে, পাশাপাশি একটি সাধারণ কাজ (সমাধানটি উইন্ডোজ গিট ব্যাশে আমার পক্ষে কাজ করছে না)

find * -type d

এটি খুব পারফরম্যান্স নাও হতে পারে, তবে কাজটি সম্পন্ন করে, এবং আমাদের মাঝে মাঝে এটি প্রয়োজন।

[সম্পাদনা]: @ অ্যালেক্সান্ডারমিলস মন্তব্য হিসাবে এটি মূল অবস্থানের (যেমন ./.hidden) গোপন ডিরেক্টরিগুলি প্রদর্শন করবে না , তবে এটি লুকানো সাব-ডাইরেক্টরিগুলি (উদাহরণস্বরূপ ./folder/.hiddenSub) প্রদর্শন করবে । [উইন্ডোজে গিট ব্যাশ দিয়ে পরীক্ষিত]

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