উত্তর:
ব্যাश বিল্টিন পুনর্নির্দেশ (tldp) ব্যবহার করুন :
cat file2 >> file1
sudo
করবেন cat
(এবং অনুরোধ জানালে শংসাপত্রগুলি প্রবেশ করান)।
tee
প্রোগ্রাম: cat 1 | tee -a 2 3
। আপনি --append
(বা -a
সংক্ষিপ্তের জন্য) স্যুইচের পরে আপনার পছন্দ মতো ফাইলগুলি রাখতে পারেন।
cat file2 >> file1
>>
অপারেটর নামের ফাইল আউটপুট appends বা নামের ফাইল তৈরি করে যদি এটি বিদ্যমান নেই।
cat file1 file2 > file3
এটি একটিতে দুটি বা ততোধিক ফাইলকে যুক্ত করে। আপনার প্রয়োজন অনুসারে যতগুলি উত্স ফাইল থাকতে পারে। উদাহরণ স্বরূপ,
cat *.txt >> newfile.txt
আপডেট 20130902
মন্তব্যগুলিতে ইউরো সুপারিশ করে "চেষ্টা করবেন না cat file1 file2 > file1
"। প্রত্যাশিত ফলাফলটির ফলে এটি না ঘটার কারণটি হ'ল পুনর্নির্দেশ প্রাপ্ত ফাইলটি বাম দিকে বাম দিকে কমান্ড >
কার্যকর হওয়ার আগে প্রস্তুত করা হয়। এই ক্ষেত্রে, প্রথমে file1
শূন্য দৈর্ঘ্যে কাটা হয় এবং আউটপুট জন্য খোলা হয়, তারপরে cat
কমান্ডটি এখন শূন্য-দৈর্ঘ্যের ফাইলটি এবং এর মধ্যে থাকা সামগ্রীর সাথে যুক্ত করতে file2
চেষ্টা করে file1
। ফলাফলটি হ'ল এর মূল বিষয়বস্তুগুলি file1
হারিয়ে গেছে এবং এর জায়গায় একটি অনুলিপি file2
যা সম্ভবত প্রত্যাশিত ছিল না।
আপডেট 20160919
মন্তব্যে tpartee ব্যাকিং তথ্য / উত্সের সাথে লিঙ্ক করার পরামর্শ দেয়। একটি অনুমোদনমূলক রেফারেন্সের জন্য, আমি দয়া করে পাঠককে লিনাক্সকম্যান্ড.অর্গ.এজে sh ম্যান পেজে পরিচালিত করি:
কমান্ড কার্যকর হওয়ার আগে, শেল দ্বারা ব্যাখ্যা করা একটি বিশেষ স্বরলিপি ব্যবহার করে এর ইনপুট এবং আউটপুট পুনর্নির্দেশ করা যেতে পারে।
যদিও এটি পাঠককে তাদের কী জানা দরকার তা যদি আপনি এটি সন্ধান না করেন এবং বিবৃতি শব্দের দ্বারা শব্দটিকে পৃথক করে না রাখেন তবে তা সহজেই অনুমেয়। এখানে 'আগে' হওয়া সবচেয়ে গুরুত্বপূর্ণ শব্দ। কমান্ড কার্যকর হওয়ার পূর্বে পুনঃনির্দেশটি সম্পন্ন (বা ব্যর্থ) ।
cat file1 file2 > file1
শেলের উদাহরণে প্রথমে পুনর্নির্দেশটি সঞ্চালন করে যাতে I / O হ্যান্ডলগুলি যে পরিবেশে কমান্ড কার্যকর হওয়ার আগে কার্যকর করা হবে তার স্থানে রয়েছে।
পুনর্নির্দেশের অগ্রাধিকারটি দৈর্ঘ্যে আবৃত এমন একটি বন্ধুত্বপূর্ণ সংস্করণ ইয়ান অ্যালেনের ওয়েবসাইটে লিনাক্স কোর্সওয়্যার আকারে পাওয়া যাবে। তাঁর আই / ও পুনঃনির্দেশ নোট পৃষ্ঠাগুলিতে এই বিষয়টিতে আরও অনেক কিছু বলা আছে, পর্যবেক্ষণ সহ যে কোনও নির্দেশ না দিয়েও পুনঃনির্দেশ কাজ করে। এটি শেলের কাছে পৌঁছে দেওয়া:
$ >out
... নামকরণ করা একটি খালি ফাইল তৈরি করে। শেলটি প্রথমে I / O পুনঃনির্দেশ সেট আপ করে, তারপরে একটি কমান্ড সন্ধান করে, কিছুই খুঁজে পায় না এবং অপারেশন সম্পূর্ণ করে।
cat file1 file2 > file1
- এটি সম্ভবত আপনি অপেক্ষা করছেন এমন কাজ করবে না।
>>
যা ফাইলটি পরিবর্তন করবেfile1
। টি.রব তার উত্তরটি ব্যাখ্যা করার চেয়ে আরও ভাল কাজ করেছেন কেবলমাত্র এমন কিছু জমা দেওয়ার জন্য যা দৌড়ের দিক থেকে সত্য ছিল ভুল। প্রশ্নের পাঠ্যের ভিত্তিতে, আমি বিশ্বাস করি যে cat file1 file2 > file3
এটিই উপযুক্ত আদেশ যা @ আসির সন্ধান করেছিল।
>
হ'ল প্রথমে ডানদিকের অপারেশনটি কার্যকর করা হয়। সুতরাং মৃত্যুদন্ড কার্যকর করার cat file1 file2 > file1
পরে প্রথমে নূন্যতম file1
দৈর্ঘ্যের ফাইলটি অনুলিপি করার চেষ্টা করা হবে। ক্রিয়াকলাপটি যে ক্রমটি ঘটতে পারে এবং হওয়া উচিত সে সম্পর্কে আপনি যখন চিন্তা করেন তবে এটি যথেষ্ট সূক্ষ্ম যে এটি বহু লোককে অবাক করে তোলে। সুতরাং অন্য কিছু না হলে, ইউরো এবং আপনি উত্তরটি আরও উন্নতি করতে বলেছেন। তার জন্য ধন্যবাদ!
>>
সংযোজন হয় এবং ফাইলটি >
প্রতিস্থাপন করে।
দ্রষ্টব্য : আপনার যদি sudo ব্যবহারের প্রয়োজন হয় তবে এটি করুন:
sudo bash -c 'cat file2 >> file1'
sudo
কমান্ডটি কেবল প্রিপেন্ডিংয়ের স্বাভাবিক পদ্ধতিটি ব্যর্থ হবে, যেহেতু সুবিধাবদ্ধতা বৃদ্ধি আউটপুট পুনঃনির্দেশের মধ্যে নিয়ে যায় না।
cat file2 | sudo tee -a file1 > /dev/null
কেবলমাত্র রেফারেন্সের জন্য, ddrescue ব্যবহার করে টাস্কটি অর্জনের একটি বাধা উপায় সরবরাহ করে যদি উদাহরণস্বরূপ, আপনার কাছে বড় ফাইল এবং বিরতি দেওয়ার দরকার পড়ে এবং পরে কিছুটা পরে চালিয়ে যান:
ddrescue -o $(wc --bytes file1 | awk '{ print $1 }') file2 file1 logfile
logfile
গুরুত্বপূর্ণ বিট। আপনি Ctrl-C
ঠিক একই কমান্ডটি আবার নির্দিষ্ট করে আবার প্রক্রিয়াটি বাধাগ্রস্থ করতে এবং পুনরায় সূচনা করতে পারেন logfile
এবং ddrescue এখান থেকে পড়ে এবং পুনরায় শুরু করবে । -o A
পতাকা ddrescue বলে বাইট থেকে শুরু করতে একটি আউটপুট ফাইলের মধ্যে ( file1
)। সুতরাং wc --bytes file1 | awk '{ print $1 }'
কেবল file1
বাইটগুলির আকার বের করুন (আপনি ls
যদি চান তবে আউটপুটটিতে কেবল পেস্ট করতে পারেন)।
মন্তব্যগুলিতে এনজিএস দ্বারা নির্দেশিত হিসাবে, খারাপ দিকটি হ'ল ডিড্রেস্কু সম্ভবত ডিফল্টরূপে ইনস্টল করা হবে না, সুতরাং আপনাকে এটি ম্যানুয়ালি ইনস্টল করতে হবে। অন্য জটিলতাটি হ'ল ড্রেসস্কুতে দুটি সংস্করণ রয়েছে যা আপনার সঞ্চিতাগুলিতে থাকতে পারে: আরও তথ্যের জন্য এই জিজ্ঞাসাবাদু প্রশ্নটি দেখুন। আপনি যে সংস্করণটি চান তা হ'ল GNU ddrescue এবং ডেবিয়ান-ভিত্তিক সিস্টেমে নাম দেওয়া প্যাকেজটি রয়েছে gddrescue
:
sudo apt install gddrescue
অন্যান্য ডিস্ট্রোদের জন্য ddrescue এর GNU সংস্করণের জন্য আপনার প্যাকেজ পরিচালনা সিস্টেমটি পরীক্ষা করুন ।
আরেকটি সমাধান:
cat file1 | tee -a file2
tee
আপনার সুবিধায় আপনি যতগুলি ফাইল যুক্ত করতে পারেন তার সুবিধা রয়েছে, উদাহরণস্বরূপ:
cat file1 | tee -a file2 file3 file3
বিষয়বস্তু যোগ হবে file1
থেকে file2
, file3
এবং file4
।
ম্যান পৃষ্ঠা থেকে:
-a, --append
append to the given FILEs, do not overwrite
cat
সহজ সমাধান হতে পারে তবে এটি যখন আমরা বড় ফাইলগুলিকে একত্রিত করি তখন খুব ধীর হয়ে যায়, find -print
আপনাকে উদ্ধার করা, যদিও আপনাকে একবার বিড়াল ব্যবহার করতে হবে।
amey@xps ~/work/python/tmp $ ls -lhtr
total 969M
-rw-r--r-- 1 amey amey 485M May 24 23:54 bigFile2.txt
-rw-r--r-- 1 amey amey 485M May 24 23:55 bigFile1.txt
amey@xps ~/work/python/tmp $ time cat bigFile1.txt bigFile2.txt >> out.txt
real 0m3.084s
user 0m0.012s
sys 0m2.308s
amey@xps ~/work/python/tmp $ time find . -maxdepth 1 -type f -name 'bigFile*' -print0 | xargs -0 cat -- > outFile1
real 0m2.516s
user 0m0.028s
sys 0m2.204s
time (find . -maxdepth 1 -type f -name 'bigFile*' -print0 | xargs -0 cat -- > outFile1)
এবং এটি আপনার বিড়াল কেবল কমান্ডের মতোই ফলাফল তৈরি করে।
আপনি এগুলি ছাড়াও এটি করতে পারেন cat
, যদিও সততার cat
সাথে আরও পাঠযোগ্য:
>> file1 < file2
>>
Appends stdin করতে file1
এবং <
ডাম্প file2
করার stdin ।