linux "খুঁজে বের করুন: পাথগুলি অবশ্যই অভিব্যক্তিটির আগে অবশ্যই থাকতে হবে:" আমি কিভাবে একটি পুনরাবৃত্তিমূলক অনুসন্ধান নির্দিষ্ট করব যা বর্তমান ডিরেক্টরিতে ফাইলগুলিও খুঁজে পায়?




bash find (4)

উদ্ধৃতিতে এটি করার চেষ্টা করুন:

find . -name '*test.c'

বর্তমান ডিরেক্টরি এবং এর সাবডিরেক্টরিগুলিতে মিল খোঁজার জন্য আমার হার্ড টাইম হচ্ছে।

যখন আমি রান find *test.c এটি শুধুমাত্র বর্তমান ডিরেক্টরির মধ্যে ম্যাচ দেয়। (সাবডিরেক্টরিগুলিতে দেখায় না)

আমি find . -name *test.c চেষ্টা করি find . -name *test.c find . -name *test.c আমি একই ফলাফল আশা করি, কিন্তু পরিবর্তে এটি আমাকে শুধুমাত্র একটি উপ-ডিরেক্টরীতে থাকা মিল দেয়। যখন এমন ফাইল থাকে যা কাজ নির্দেশকের সাথে মিলবে, তখন এটি আমাকে দেয় find: paths must precede expression: mytest.c

এই ত্রুটিটির অর্থ কী, এবং আমি বর্তমান ডিরেক্টরি এবং এর উপ-নির্দেশিকাগুলির উভয় মিলগুলি কীভাবে পেতে পারি?


উদ্ধৃতিতে এটি চেষ্টা করার চেষ্টা করুন - আপনি শেলের ওয়াইল্ডকার্ড সম্প্রসারণে চলমান হচ্ছেন, তাই আপনি যা সন্ধান করতে যাচ্ছেন তা আপনি দেখতে পাবেন:

find . -name bobtest.c cattest.c snowtest.c

... সিনট্যাক্স ত্রুটি কারণ। সুতরাং পরিবর্তে এই চেষ্টা করুন:

find . -name '*test.c'

আপনার ফাইল অভিব্যক্তিটির চারপাশে একক উদ্ধৃতি চিহ্ন লক্ষ্য করুন - এটি আপনার ওয়াইল্ডকার্ডগুলি প্রসারিত শেল (ব্যাশ) বন্ধ করবে।


ম্যানুয়াল থেকে:

NON-BUGS         

   Operator precedence surprises
   The command find . -name afile -o -name bfile -print will never print
   afile because this is actually equivalent to find . -name afile -o \(
   -name bfile -a -print \).  Remember that the precedence of -a is
   higher than that of -o and when there is no operator specified
   between tests, -a is assumed.

   paths must precede expression error message
   $ find . -name *.c -print
   find: paths must precede expression
   Usage: find [-H] [-L] [-P] [-Olevel] [-D ... [path...] [expression]

   This happens because *.c has been expanded by the shell resulting in
   find actually receiving a command line like this:
   find . -name frcode.c locate.c word_io.c -print
   That command is of course not going to work.  Instead of doing things
   this way, you should enclose the pattern in quotes or escape the
   wildcard:
   $ find . -name '*.c' -print
   $ find . -name \*.c -print

কী হচ্ছে তা হচ্ছে শেলটি "* test.c" ফাইলগুলির তালিকায় প্রসারিত করছে। হিসাবে তারকাচিহ্নিত escaping চেষ্টা করুন:

find . -name \*test.c




find