আমি মানে জানতে চাই {} +
মধ্যে exec
কমান্ড, এবং এর মধ্যে পার্থক্য কি {} +
এবং {} \;
। ঠিক বলতে গেলে, এই দুটিয়ের মধ্যে পার্থক্য কী:
find . -type f -exec chmod 775 {} +
find . -type f -exec chmod 775 {} \;
আমি মানে জানতে চাই {} +
মধ্যে exec
কমান্ড, এবং এর মধ্যে পার্থক্য কি {} +
এবং {} \;
। ঠিক বলতে গেলে, এই দুটিয়ের মধ্যে পার্থক্য কী:
find . -type f -exec chmod 775 {} +
find . -type f -exec chmod 775 {} \;
উত্তর:
ব্যবহার ;
(সেমিকোলন) অথবা +
(প্লাস চিহ্ন) আদেশ দ্বারা প্রার্থনা শেল কমান্ড বিনষ্ট করার জন্য বাধ্যতামূলক -exec
/ execdir
।
;
(সেমিকোলন) বা +
(প্লাস চিহ্ন) এর মধ্যে পার্থক্য হ'ল আর্গুমেন্টগুলি কীভাবে অনুসন্ধানের -exec
/ -execdir
প্যারামিটারে যায়। উদাহরণ স্বরূপ:
ব্যবহার করে ;
একাধিক কমান্ড কার্যকর করা হবে (প্রতিটি যুক্তির জন্য পৃথকভাবে),
উদাহরণ:
$ find /etc/rc* -exec echo Arg: {} ';'
Arg: /etc/rc.common
Arg: /etc/rc.common~previous
Arg: /etc/rc.local
Arg: /etc/rc.netboot
নিম্নলিখিত সমস্ত যুক্তি
find
কমান্ডের আর্গুমেন্ট হিসাবে নেওয়া হয়।স্ট্রিংটি
{}
বর্তমান ফাইলের নাম দ্বারা প্রক্রিয়া করা হচ্ছে।
ব্যবহার +
কমপক্ষে সম্ভাব্য কমান্ডগুলি কার্যকর করবে (যেমন আর্গুমেন্টগুলি একত্রিত করা হবে)। xargs
কমান্ডটি কীভাবে কাজ করে তার সাথে এটি খুব মিল , সুতরাং লাইন প্রতি আর্গুমেন্টের সর্বাধিক সীমা ছাড়িয়ে যাওয়ার জন্য এটি যতটা সম্ভব কমান্ড হিসাবে অনেক আর্গুমেন্ট ব্যবহার করবে।
উদাহরণ:
$ find /etc/rc* -exec echo Arg: {} '+'
Arg: /etc/rc.common /etc/rc.common~previous /etc/rc.local /etc/rc.netboot
কমান্ড লাইনটি প্রতিটি নির্বাচিত ফাইলের নাম শেষে যুক্ত করা হয়।
{}
কমান্ডের মধ্যে কেবলমাত্র একটি উদাহরণ অনুমোদিত।
আরো দেখুন:
প্রদত্ত কমান্ডটি তিনটি ফাইলের নীচে নেবে:
fileA
fileB
fileC
আপনি যদি -exec
একটি প্লাস ( +
) চিহ্ন সহ ব্যবহার করেন ,
find . -type f -exec chmod 775 {} +
এটা হবে:
chmod 775 fileA fileB fileC
কমান্ড লাইনটি প্রতিটি মিলিত ফাইলের নামটি শেষে যুক্ত করে তৈরি করা হয় যা একইভাবে xargs
এটির কমান্ড লাইনগুলি তৈরি করে। কমান্ডের মোট প্রার্থনার সংখ্যা ( chmod
এই ক্ষেত্রে) ম্যাচ করা ফাইলগুলির সংখ্যার তুলনায় অনেক কম হবে।
আপনি যদি -exec
একটি সেমিকোলন ( ;
) ব্যবহার করেন ,
find . -type f -exec chmod 775 {} \;
এটা হবে:
chmod 775 fileA
chmod 775 fileB
chmod 775 fileC
অনুসারে man find
:
-exec কমান্ড {} + -exec ক্রিয়নের এই রূপটি নির্বাচিত ফাইলগুলিতে নির্দিষ্ট কমান্ড চালায়, তবে প্রতিটি নির্বাচিত ফাইলের নাম শেষে অন্তর্ভুক্ত করে কমান্ড লাইনটি নির্মিত হয়; কমান্ডের অনুরোধের মোট সংখ্যা মিলিত ফাইলগুলির সংখ্যার তুলনায় অনেক কম হবে। কমান্ড লাইনটি একইভাবে নির্মিত হয়েছে যেমন xargs তার কমান্ড লাইনগুলি তৈরি করে। কমান্ডের মধ্যে '{}' কেবলমাত্র একটি উদাহরণ অনুমোদিত। কমান্ডটি শুরু ডিরেক্টরিতে কার্যকর করা হয়।
man find(1)
খুব বিস্তারিতভাবে বর্ণনা করা হয়েছে, সহজেই যে কেউ খুঁজে পেতে পারে। অলসতা করবেন না।