আমি find
ওয়াইল্ডকার্ড দ্বারা সীমাবদ্ধ ফোল্ডারগুলির সেটগুলিতে ফাইলগুলি সন্ধান করতে চাই , তবে যেখানে পথের নামে ফাঁকা স্থান রয়েছে।
কমান্ড লাইন থেকে, এটি সহজ। নিম্নলিখিত উদাহরণগুলি সমস্ত কাজ করে।
find te*/my\ files/more -print
find te*/'my files'/more -print
find te*/my' 'files/more -print
এগুলি উদাহরণস্বরূপ terminal/my files/more
এবং এর মধ্যে ফাইলগুলি সন্ধান করবে tepid/my files/more
।
যাইহোক, আমার এটি একটি স্ক্রিপ্টের অংশ হতে হবে; আমার যা দরকার তা হ'ল এরকম কিছু:
SEARCH='te*/my\ files/more'
find ${SEARCH} -print
দুর্ভাগ্যক্রমে, আমি যাই করুক না কেন, আমি মনে করি না যে find
কোনও স্ক্রিপ্টের মধ্যে একটি কমান্ডের মধ্যে ওয়াইল্ডকার্ড এবং স্পেসগুলি মিশ্রিত করতে সক্ষম হব । উপরের উদাহরণটি নিম্নলিখিত ত্রুটিগুলি প্রদান করে (ব্যাকস্ল্যাশটির অপ্রত্যাশিত দ্বিগুণকরণ নোট করুন):
find: ‘te*/my\\’: No such file or directory
find: ‘files/more’: No such file or directory
উদ্ধৃতি ব্যবহার করার চেষ্টাও ব্যর্থ।
SEARCH="te*/'my files'/more"
find ${SEARCH} -print
এটি উদ্ধৃতিগুলির অর্থ উপেক্ষা করে নিম্নলিখিত ত্রুটিগুলি প্রদান করে:
find: ‘te*/'my’: No such file or directory
find: ‘files'/more’: No such file or directory
এখানে আরও একটি উদাহরণ।
SEARCH='te*/my files/more'
find ${SEARCH} -print
প্রত্যাশিত:
find: ‘te*/my’: No such file or directory
find: ‘files/more’: No such file or directory
আমি চেষ্টা করেছি এমন প্রতিটি প্রকারভেদ একটি ত্রুটি প্রদান করে।
আমার একটি কার্যকারিতা রয়েছে, এটি সম্ভাব্য বিপজ্জনক কারণ এটি অনেকগুলি ফোল্ডার ফেরত দেয়। আমি সমস্ত স্থানকে একটি প্রশ্ন চিহ্ন (একক-অক্ষর ওয়াইল্ডকার্ড) এ রূপান্তর করি:
SEARCH='te*/my files/more'
SEARCH=${SEARCH// /?} # Convert every space to a question mark.
find ${SEARCH} -print
এটি সমান:
find te*/my?files/more -print
এটি কেবল সঠিক ফোল্ডারগুলিই নয়, এটিও terse/myxfiles/more
প্রত্যাখ্যান করে।
আমি যা করার চেষ্টা করছি তা কীভাবে অর্জন করতে পারি? গুগল আমাকে সাহায্য করেনি :(
find "${SEARCH}" -print
?
te*/'my files'/more
।
SEARCH: command not found
আদেশের সঙ্গেfind -print
মৃত্যুদন্ড কার্যকর করা হচ্ছে।