find( মানক -name/ -pathপূর্বাভাসের জন্য) ওয়াইল্ডকার্ড নিদর্শনগুলি ঠিক গ্লোবগুলির মতো ব্যবহার করে (নোটটি যে {a,b}কোনও গ্লোব অপারেটর নয়; প্রসারণের পরে আপনি দুটি গ্লোব পাবেন)। প্রধান পার্থক্য হ'ল স্ল্যাশগুলি পরিচালনা করা (এবং ডট ফাইল এবং ডায়ারগুলিকে বিশেষভাবে বিবেচনা করা হচ্ছে না find)। *গ্লোবগুলিতে বেশ কয়েকটি ডিরেক্টরি বিস্তৃত হবে না। */*/*2 স্তরের ডিরেক্টরিতে তালিকাবদ্ধ হতে পারে। একটি যোগ -path './*/*/*'করা অন্তত 3 স্তরের গভীর যে কোনও ফাইলের সাথে মেলে এবং findকোনও ডিরেক্টরিতে কোনও গভীরতার সাথে লিখিতকরণ থেকে বিরত থাকবে না ।
যে বিশেষ জন্য
./foo*bar/quux[A-Z]{.bak,}/pic[0-9][0-9][0-9][0-9]?.jpg
বেশ কয়েকটি গ্লোব, এটি অনুবাদ করা সহজ, আপনি 3 গভীরতায় ডিরেক্টরি চাইছেন, তাই আপনি ব্যবহার করতে পারেন:
find . -mindepth 3 -maxdepth 3 \
\( -path './foo*bar/quux[A-Z].bak/pic[0-9][0-9][0-9][0-9]?.jpg' -o \
-path './foo*bar/quux[A-Z]/pic[0-9][0-9][0-9][0-9]?.jpg' \) \
-exec cmd {} +
(বা -depth 3কিছু findবাস্তবায়ন সহ) বা পজিকলি:
find . -path './*/*/*' -prune \
\( -path './foo*bar/quux[A-Z].bak/pic[0-9][0-9][0-9][0-9]?.jpg' -o \
-path './foo*bar/quux[A-Z]/pic[0-9][0-9][0-9][0-9]?.jpg' \) \
-exec cmd {} +
যা গ্যারান্টি দেয় যে এটি *এবং অক্ষরের সাথে ?মেলে না /।
( findগ্লোবগুলির বিপরীতে foo*barবর্তমান ডিরেক্টরিতে ডিরেক্টরিগুলি বাদ দিয়ে অন্য ডিরেক্টরিগুলির বিষয়বস্তু পড়তে পারে - এবং ফাইলগুলির তালিকা বাছাই করা হত না But তবে আমরা যদি সমস্যাটি বাদ দিয়ে দিই [A-Z]বা অবৈধ চরিত্রের সাথে */ এর ?সাথে আচরণ করা হয়) অনির্ধারিত, আপনি একই ফাইলগুলির তালিকা পাবেন)।
তবে যে কোনও ক্ষেত্রেই, যেমনটি @ মুরু দেখিয়েছেন , সিস্টেম কলের সীমাটি পরিপূর্ণ করার জন্য findএটি কেবলমাত্র ফাইলের তালিকাকে কয়েক রানে বিভক্ত করার জন্য অবলম্বন করার দরকার নেই execve()। কিছু শেল zsh( যেমন zargs) বা ksh93(সহ command -x) এমনকি এটির জন্য অন্তর্নির্মিত সমর্থন করে।
সহ zsh(যার গ্লোবগুলিতেও সমান -type fএবং অন্যান্য অন্যান্য findপূর্বাভাস থাকে), উদাহরণস্বরূপ:
autoload zargs # if not already in ~/.zshrc
zargs ./foo*bar/quux[A-Z](|.bak)/pic[0-9][0-9][0-9][0-9]?.jpg(.) -- cmd
( (|.bak)একটি উল্লিখিত glob অপারেটর বিপরীত {,.bak}, (.)উল্লিখিত glob কোয়ালিফায়ার এর সমতূল্য finds 'এর -type f, অ্যাড oNমতো বাছাই এড়িয়ে যেতে সেখানে find, Dডট ফাইল অন্তর্ভুক্ত করার জন্য (উল্লিখিত glob প্রযোজ্য নয়))
Glo findডিরেক্টরি গাছ যেমন গ্লোবগুলির মতো ক্রল করার জন্য আপনার এমন কিছু দরকার হয়:
find . ! -name . \( \
\( -path './*/*' -o -name 'foo*bar' -o -prune \) \
-path './*/*/*' -prune -name 'pic[0-9][0-9][0-9][0-9]?.jpg' -exec cmd {} + -o \
\( ! -path './*/*' -o -name 'quux[A-Z]' -o -name 'quux[A-Z].bak' -o -prune \) \)
এটি স্তর স্তর 1 এর সমস্ত ডিরেক্টরি ছাঁটাই হয় foo*barএবং সমস্ত স্তর 2 quux[A-Z]বা quux[A-Z].bakএকগুলি ব্যতীত এবং তারপরে pic...3 স্তরের একটি নির্বাচন করুন (এবং সেই স্তরের সমস্ত ডিরেক্টরি ছাঁটাই)।
-pathবা এর সাথে ফলাফল এক্সপ্রেশন ব্যবহার করতে সক্ষম হওয়া উচিত-ipath।find . -path './foo*bar/quux[A-Z]/pic[0-9][0-9][0-9][0-9]?.jpg'কাজ করা উচিত - এটি মিলবে ছাড়া/fooz/blah/bar/quuxA/pic1234d.jpg। তাতে কি সমস্যা হবে?