পুনরাবৃত্তি ছাড়া সন্ধান করুন


246

findকমান্ডটি কোনও উপায়ে ব্যবহার করা সম্ভব যে এটি উপ-ডিরেক্টরিগুলিতে পুনরুক্ত হবে না? উদাহরণ স্বরূপ,

DirsRoot
  |-->SubDir1
  |    |-OtherFile1
  |-->SubDir2
  |    |-OtherFile2
  |-File1
  |-File2

আর এরকম কিছুর ফলাফল find DirsRoot --donotrecuourse -type fকি শুধু হবে File1, File2?

উত্তর:


380

আমি মনে করি আপনি -maxdepth 1আপনার বর্তমান কমান্ড কাঠামোর উপর ভিত্তি করে বিকল্পটি দিয়ে যা চান তা পাবেন । যদি না, আপনি এ খুঁজছেন চেষ্টা করে দেখতে পারেন man পৃষ্ঠা জন্য find

প্রাসঙ্গিক এন্ট্রি (সুবিধার জন্য):

-maxdepth levels
          Descend at most levels (a non-negative integer) levels of direc-
          tories below the command line arguments.   `-maxdepth  0'  means
          only  apply the tests and actions to the command line arguments.

আপনার বিকল্পগুলি মূলত:

find DirsRoot/* -maxdepth 0 -type f #This does not show hidden files

বা:

find DirsRoot/ -maxdepth 1 -type f #This does show hidden files

ওপির উদাহরণের জন্য আমার কি মনে হয় এটি হওয়া দরকার -maxdepth 1?
পল আর

@ পল আর: আসলে, এই ধরণের উপর নির্ভর করে তিনি কীভাবে লুকানো ফাইলগুলি পরিচালনা করতে চান, তবে আমি আমার উত্তরটি সংশোধন করেছি। তার উদাহরণ 1সম্ভবত তিনি যা চান।

1
আমার জন্য, কোনও ফাইল -maxdepth 0দেখানো হচ্ছে না তবে লুকানো ফাইলগুলি প্রদর্শিত হওয়ার সাথে সাথে কাজ করছে। -maxdepth 1
ব্রুস ওয়েন

1
@BruceWayne নোট *মধ্যে find DirsRoot/* -maxdepth 0 -type f। যদি আপনি এটি ছেড়ে চলে যান তবে এটি কোনও ফাইল দেখায় না।
পরিস্কারকারীরা

@ মূক, ধন্যবাদ, তবে আমি যে মূল প্রসঙ্গে আমার এই সমস্যাটি ছিল তা মনে করতে পারি না, হাহা।
ব্রুস ওয়েন

33

আমি বিশ্বাস করি আপনি খুঁজছেন -maxdepth 1


1
ওপির উদাহরণের জন্য আমার কি মনে হয় এটি হওয়া দরকার -maxdepth 1?
পল আর

হ্যাঁ, তিনি যদি তাঁর উদাহরণের মতো কমান্ডটি ব্যবহার করছিলেন তবে এটি হবে 1 My আমার ভুল।
13-15

17

আপনি যদি পসিক্স অনুগত সমাধানের সন্ধান করেন:

cd DirsRoot && find . -type f -print -o -name . -o -prune

-ম্যাক্সডেপথ POSIX- র অনুগত বিকল্প নয়।


এই সমাধানের জন্য ধন্যবাদ, তবে এটিকে কী সহজ করা যায় না find DirsRoot/* -type f -prune?
দোকসপ্পার

@ ডোকাস্পার সত্যিই দুর্দান্ত প্রশ্ন! (আপনি -pruneবিটিডব্লিউর আগে "-o" toোকানো ভুলে গেছেন ) উত্তরটি হ'ল, এটি পারে না। কেন এটি সরল করা যায় না তা পুরোপুরি বুঝতে, কেবলমাত্র set -xনির্গমনের আগে কমান্ডটি নির্গত করুন find DirsRoot/* -type f -o -pruneএবং আপনি তা অবিলম্বে এটি দেখতে পাবেন। মূল কারণ হ'ল DirsRoot/*অভিব্যক্তির শেল সম্প্রসারণের সীমাবদ্ধতা ।
sqr163

সেন্টোতে কাজ করছে না, এখনও আউটপুট এ সম্পূর্ণ পুনরাবৃত্তি করছে !!!! যথাযথ আদেশটি হ'লfind . -name . -o -prune
রিশিন

সোলারিসে যাইহোক, ডায়ার রুটকে কাঙ্ক্ষিত পথ হিসাবে রেখে, আপনার সিডি লাগবে না; পরিবর্তে, আপনি: DirsRoot / খুঁজে পেতে পারেন। -প্রকার-এফ-প্রিন্ট -ও-নাম। -ও-প্রুনি
স্পিওটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.