জিএনইউ সন্ধানের জন্য ম্যান পেজটিতে বলা হয়েছে:
-exec command ; [...] The string `{}' is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find. Both of these constructions might need to be escaped (with a `\') or quoted to protect them from expansion by the shell.
এটি লোকটি থেকে find
(জিএনইউ সন্ধানী) ৪.৪.২।
এখন আমি এটি ব্যাশ এবং ড্যাশ দিয়ে পরীক্ষা করেছি এবং উভয়কেই {}
মুখোশ দেওয়ার দরকার নেই । এখানে একটি সহজ পরীক্ষা:
find /etc -name "hosts" -exec md5sum {} \;
এমন কোনও শেল আছে, যার জন্য আমার সত্যিই ধনুর্বন্ধকগুলি মাস্ক করা দরকার? দ্রষ্টব্য, এটি যে ফাইলটি খুঁজে পেয়েছে তাতে ফাঁকা রয়েছে (বাশ থেকে আহবান করা হয়েছে) তার উপর নির্ভর করে না:
find ~ -maxdepth 1 -type d -name "U*" -exec ls -d {} \;
/home/stefan/Ubuntu One
যদি পাওয়া ফাইলটি একটি সাব-শেলের হাতে দেওয়া হয় তবে এটি পরিবর্তিত হবে:
find ~ -maxdepth 3 -type d -name "U*" -exec bash -c 'ls -d {}' \;
ls: cannot access /home/stefan/Ubuntu: No such file or directory
ls: cannot access One: No such file or directory
যা দ্বারা সমাধান করা যেতে পারে:
find ~ -maxdepth 3 -type d -name "U*" -exec bash -c 'ls -d "$0"' {} \;
বিপরীতে:
find ~ -maxdepth 3 -type d -name "U*" -exec bash -c 'ls -d "{}"' \;
/home/stefan/Ubuntu One
তবে ম্যান পেজ যে কথা বলছে তা নয়, তাই না? তাহলে কোন শেলটি {}
অন্যভাবে আচরণ করে ?