-Exec cmd {x এবং xargs -I এর মধ্যে কি কোনও পার্থক্য রয়েছে?


1

সাধারণত, xargsসমস্ত কিছু একসাথে বান্ডিল করে, তবে -Iপতাকাটির সাথে ব্যবহার করার পরে মনে হয় সবকিছুকে একক লাইন হিসাবে মূল্যায়ন করা যায়। এর অর্থ কি এটির গতি সুবিধা হারাবে? এছাড়াও যদি -exec cmd {}+ সিনট্যাক্স ব্যবহার করা হয় তবে এর অর্থ কি এটি এর চেয়ে আরও ভাল সম্পাদন করবে xargs -I?


উত্তর:


3

সংক্ষিপ্ত উত্তর হল হ্যাঁ".

xargs -I{} cmdনির্দিষ্ট প্রতিস্থাপনের স্ট্রিংয়ের একাধিক সংঘটনকে অনুমতি দেয়, তবে কেবলমাত্র কার্যকর করা প্রতিটি ইনপুট আইটেম সরবরাহ করবে cmd, নিম্নলিখিত উদাহরণের অর্থ, echoতিনবার আহ্বান করা হবে:

$ mkdir t
$ cd t
$ touch foo bar baz

$ find . -type f | xargs -I{} echo {} {}
./bar ./bar
./baz ./baz
./foo ./foo

মনে রাখবেন যদি আপনি প্রতিটি ইনপুট আইটেমটি একবার কমান্ড লাইন প্রতি একটির বেশি উল্লেখ করার প্রয়োজন হবে না, তারপর find -exec cmd {} +প্রায় সমতূল্য find | xargs(ছাড়া -I), ব্যতীত এটি ডিফল্ট দ্বারা হোয়াইটস্পেস সঙ্গে ফাইলের নামের পরিচালনা (পরেরটির, ব্যবহার সঙ্গে সঠিকভাবে এমবেডেড হোয়াইটস্পেস হ্যান্ডেল করতে find -print0 | xargs -0)।

find -exec cmd {} +এতে একাধিক ইনপুট আইটেমগুলি পাস করবে cmdতবে প্রতিস্থাপনের স্ট্রিং ( {}) এর কেবলমাত্র একটি ঘটনা অনুমোদিত। এই ডিফল্ট আচরণ xargsছাড়া -I। নিম্নলিখিত উদাহরণে, echoপ্রতিটি আর্গুমেন্টের জন্য কেবল একবারই অনুরোধ করা হয় (বৃহত ইনপুট সেটগুলির জন্য, উভয় পন্থাই ইনপুটটিকে অংশগুলিতে বিভক্ত করে দেয় যে প্রতিটি উত্পন্ন কমান্ড লাইন এর চেয়ে কম হয় PATH_MAX, অর্থ cmdএকাধিক বার ডাকা যেতে পারে, তবে একাধিকবার কম হয়) প্রতি ইনপুট আইটেম):

$ find . -type f -exec echo {} +
./bar ./baz ./foo

$ find . -type f | xargs echo
./bar ./baz ./foo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.