এটি find
সরাসরি ব্যবহার থেকে করা যেতে পারে -exec
:
find . -name "*.xml" -type f -exec xmllint --output '{}' --format '{}' \;
যা যা পাস হয়েছে -exec
তা প্রতি ফাইলের জন্য একবার ব্যবহার করা হবে {}
যা বর্তমান ফাইলের নামের সাথে টেমপ্লেটের পরামিতিগুলি প্রতিস্থাপন করা হবে। \;
Find কমান্ডের প্রান্তে শুধু লাইন বন্ধ।
এই ক্ষেত্রে ব্যবহারটি xargs
সত্যই প্রয়োজনীয় নয় কারণ xmllint
ইনপুট এবং আউটপুট ফাইলের নাম উভয়ই একই কলটির মধ্যে নির্দিষ্ট করতে হবে বলে আমাদের প্রতি ফাইল প্রতি একবার আবেদন করতে হবে।
xargs
যদি কমান্ডটি পাইপ করা হয় তখন যদি প্রয়োজন হয় যে একবারে একাধিক ফাইলে কাজ করা ছিল এবং সেই তালিকাটি দীর্ঘ ছিল। আপনি এই ক্ষেত্রে এটি করতে পারবেন না, যেহেতু আপনার একক ফাইলের নামটি --output
অপশনটিতে পাস করতে হবে xmllint
। xargs
যদি আপনি প্রচুর ফাইল প্রক্রিয়াকরণ করেন তবে আপনি "আর্গুমেন্ট তালিকা খুব দীর্ঘ" ত্রুটিটি শেষ না করেই করতে পারেন। বিকল্পের xargs
সাহায্যে ফাইল প্রতিস্থাপনের স্ট্রিংগুলিকে সমর্থন করে -I
:
find . -name "*.xml" -type f | xargs -I'{}' xmllint --output '{}' --format '{}'
find -exec
উপরের আদেশ হিসাবে একই কাজ করবে । আপনার ফোল্ডার কোনো শূণ্যস্থান মত অদ্ভুত অক্ষর থাকে, তাহলে আপনি ব্যবহার করতে হবে -0
এর অপশন find
এবং xargs
। কিন্তু ব্যবহার xargs
সঙ্গে -I
বিকল্প বোঝা -L 1
যার অর্থ শুধুমাত্র যাহাই হউক না কেন একটি সময়ে 1 টি ফাইল প্রক্রিয়া করবো, যাতে আপনি সেইসাথে সরাসরি ব্যবহার করতে পারেন find
সঙ্গে -exec
।