উত্তর:
ls *.txt | xargs cat >> all.txt
এটি আরও ভাল কাজ করতে পারে, যেহেতু এটি প্রতিটি ফাইলের পরে আবার তৈরি না করে all.txt এ যুক্ত হবে।
যাইহোক, cat *.txt >all.txtএছাড়াও কাজ করবে। :-)
আপনার ফাইলের কিছুতে যদি ', "বা স্পেস থাকে তবে বিভাজক সমস্যারxargs কারণে ব্যর্থ হবে
সাধারণত চালানো হয় না xargs -0 ছাড়ুন না কারণ এটি ফিরে আসবে এবং কোনও দিন আপনাকে কামড় দেবে।
পরিবর্তে GNU সমান্তরাল ব্যবহার বিবেচনা করুন:
ls *.txt | parallel cat > tmp/all.txt
বা আপনি যদি পছন্দ করেন:
ls *.txt | parallel cat >> tmp/all.txt
জিএনইউ সমান্তরাল সম্পর্কে আরও জানুন http://www.youtube.com/watch?v=OpaiGYxkSuQ
all.txt একই ডিরেক্টরিতে একটি ফাইল, তাই বিড়াল বিভ্রান্ত হয় যখন সে একই ফাইল থেকে একই ফাইলে লিখতে চায়।
অন্য দিকে:
ls *.txt | xargs cat > tmp/all.txt
এটি আপনার বর্তমান ডিরেক্টরিতে পাঠ্য ফাইলগুলি থেকে একটি উপ-ডিরেক্টরিতে all.txt- এ পড়বে (এর সাথে অন্তর্ভুক্ত নয় *.txt)।
আপনি একটি কমান্ড লাইনের দৈর্ঘ্যের সীমাবদ্ধতাও পেরিয়ে আসতে পারেন। ব্যবহারের কারণের অংশটি xargsহ'ল এটি নিরাপদ কমান্ড-লাইন-আকারের অংশগুলিতে ইনপুট বিভক্ত করে। সুতরাং, এমন একটি পরিস্থিতিতে কল্পনা করুন যেখানে আপনার ডিরেক্টরিতে কয়েক হাজার .txt ফাইল রয়েছে। ls *.txtঅকৃতকার্য হবে. আপনার করা দরকার
ls | grep .txt$ |xargs cat > /some/other/path/all.txt
.txt$এই ক্ষেত্রে .txt এ শেষ হওয়া সমস্ত কিছুর সাথে মিলে যাওয়া একটি নিয়মিত অভিব্যক্তি (সুতরাং এটি ঠিক তেমন পছন্দ হয় না *.txt, যেহেতু আপনার যদি কোনও ফাইল ডেকে থাকে atxt, তবে*.txt এটি মিলবে না, তবে নিয়মিত প্রকাশটি হবে would)
অন্য পাথের ব্যবহার হ'ল কারণ, অন্যান্য উত্তরগুলি যেমন নির্দেশ করেছে, all.txt প্যাটার্নের সাথে মিলেছে *.txtতাই ইনপুট এবং আউটপুটের মধ্যে দ্বন্দ্ব থাকতে পারে।
মনে রাখবেন যে যদি 'তাদের নামের সাথে কোনও ফাইল থাকে (এবং এটি unmatched single quoteত্রুটির কারণ হতে পারে ), আপনি এটি করতে চাইবেন
ls | grep --null .txt$ | xargs -0 cat > /some/other/path/all.txt
--Null বিকল্পটি গ্রেপকে ডিফল্ট নিউলাইনটির \0পরিবর্তে (ওরফে নাল) অক্ষর দ্বারা পৃথক আউটপুট ব্যবহার করতে বলে , এবং -0gs xargs বিকল্পটি একই ফর্ম্যাটে এটির ইনপুট আশা করতে বলে। এটিতে নতুন লাইনের সাথে আপনার ফাইল ফাইল থাকলেও এটি কাজ করবে।
ls। আপনি যদি সত্যিই ব্যবহার করতে না পারেনcat *.txt >all.txtতবে চেষ্টা করুনprintf '%s\0' *.txt | xargs -r0 cat >allএবং তারপরেmv all all.txtফাইলটি নিজেই উল্লেখ করা এড়ানো।