থেকে man xargs
xargs স্ট্যান্ডার্ড ইনপুট থেকে আইটেমগুলি পড়ে, ফাঁকা দ্বারা সীমাবদ্ধ (যা ডাবল বা একক উদ্ধৃতি বা একটি ব্যাকস্ল্যাশ দ্বারা সুরক্ষিত করা যেতে পারে) বা নিউলাইনস, এবং পরবর্তী যে কোনও প্রাথমিক-আর্গুমেন্টের সাথে কমান্ডটি (ডিফল্ট / বিন / প্রতিধ্বনি) এক বা একাধিক বার কার্যকর করে স্ট্যান্ডার্ড ইনপুট থেকে পড়া আইটেম দ্বারা। স্ট্যান্ডার্ড ইনপুটটিতে ফাঁকা রেখাগুলি এড়ানো হবে।
এক্সার্গস ডিলিমিটারকে নতুন লাইনে পরিবর্তন করে আমরা (বেশিরভাগ ক্ষেত্রে) আপনার প্রাথমিক কমান্ডটি ঠিক করতে পারি:
ls | egrep '. ' | xargs -d '\n' rm
(এটি করবেন না ... পড়ুন)
তবে ফাইলনামে যদি একটি নতুন লাইন থাকে?
touch "filename with blanks
and newline"
কারণ ইউনিক্স ফাইলের নামের ঐ খালি এবং নতুন লাইন থাকতে পারে , এই ডিফল্ট আচরণ প্রায়ই সমস্যাযুক্ত হয়; ফাঁকা এবং / অথবা নিউলাইনযুক্ত ফাইলের নামগুলি xargs দ্বারা ভুলভাবে প্রক্রিয়া করা হচ্ছে। এই পরিস্থিতিতে -0 বিকল্পটি ব্যবহার করা ভাল , যা এই জাতীয় সমস্যাগুলি প্রতিরোধ করে।
ls
আসলেই একটি সরাসরি মানুষের সরাসরি ব্যবহারের জন্য একটি সরঞ্জাম , পরিবর্তে আমাদের find
কমান্ডটি ব্যবহার করতে হবে যা নাল অক্ষর ( -print0
) দিয়ে ফাইলের নামগুলি পৃথক করতে পারে । আমাদের ইনপুট ( -z
) এবং আউটপুট ( -Z
) আলাদা করতে নাল অক্ষর ব্যবহার করতে গ্রেপকেও বলতে হবে । অবশেষে, আমরা xargs কে নাল অক্ষরও ব্যবহার করতে বলি ( -0
)
find . -type f -print0 | egrep '. ' -z -Z | xargs -0 rm
echo
টাইপস থেকে রক্ষা পেতে প্রথমে এটি চালাতে চান । যোগecho
সামনে এবং এটি সমস্ত ফাইল এটি অপসারণ যাচ্ছে প্রিন্ট আউট হবে।