উত্তর:
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
পরিবর্তে (ওরফে নাল) অক্ষর দ্বারা পৃথক আউটপুট ব্যবহার করতে বলে , এবং -0
gs xargs বিকল্পটি একই ফর্ম্যাটে এটির ইনপুট আশা করতে বলে। এটিতে নতুন লাইনের সাথে আপনার ফাইল ফাইল থাকলেও এটি কাজ করবে।
ls
। আপনি যদি সত্যিই ব্যবহার করতে না পারেনcat *.txt >all.txt
তবে চেষ্টা করুনprintf '%s\0' *.txt | xargs -r0 cat >all
এবং তারপরেmv all all.txt
ফাইলটি নিজেই উল্লেখ করা এড়ানো।