উত্তর:
এটি আউটপুট all.txt এ যুক্ত করে
cat *.txt >> all.txt
এটি all.txt ওভাররাইট করে
cat *.txt > all.txt
echo *.txt | xargs cat > all.txt
কেবল মনে রাখবেন, এখনও অবধি দেওয়া সমস্ত সমাধানের জন্য, শেলটি ক্রমটি সিদ্ধান্ত নিয়েছে যাতে ফাইলগুলি একত্রিত হয়। বাশ, আইআইআরসি-র জন্য এটি বর্ণানুক্রমিক ক্রম। যদি অর্ডারটি গুরুত্বপূর্ণ হয় তবে আপনি ফাইলগুলির যথাযথ নামকরণ করতে হবে (01file.txt, 02file.txt, ইত্যাদি ...) অথবা প্রতিটি ফাইলটি যেভাবে সংহত করতে চান তা নির্দিষ্ট করতে হবে।
$ cat file1 file2 file3 file4 file5 file6 > out.txt
উইন্ডোজ শেল কমান্ড এটি type
করতে পারে:
type *.txt >outputfile
টাইপ type
কমান্ড স্টার্ডারের কাছে ফাইলের নামও লিখে থাকে, যা >
পুনর্নির্দেশ অপারেটর দ্বারা ক্যাপচার করা হয় না (তবে কনসোলে প্রদর্শিত হবে)।
আপনি উইন্ডোজ শেল copy
ফাইল যুক্ত করতে ব্যবহার করতে পারেন ।
C:\> copy *.txt outputfile
সহায়তা থেকে:
ফাইল সংযুক্ত করতে গন্তব্যের জন্য একটি একক ফাইল নির্দিষ্ট করুন তবে উত্সের জন্য একাধিক ফাইল (ওয়াইল্ডকার্ড বা ফাইল 1 + ফাইল 2 + ফাইল 3 ফর্ম্যাট ব্যবহার করে)।
সাবধানতা অবলম্বন করুন, কারণ এগুলির কোনও পদ্ধতিই প্রচুর সংখ্যক ফাইল নিয়ে কাজ করে না। ব্যক্তিগতভাবে, আমি এই লাইনটি ব্যবহার করেছি:
for i in $(ls | grep ".txt");do cat $i >> output.txt;done
সম্পাদনা করুন: যেমন কেউ মন্তব্য বলেন, আপনি প্রতিস্থাপন করতে পারেন $(ls | grep ".txt")
সঙ্গে$(ls *.txt)
সম্পাদনা করুন: @gnourf_gnourf দক্ষতার ধন্যবাদ, ব্যবহার উল্লিখিত glob একটি ডিরেক্টরির মধ্যে ফাইল পুনরুক্তি উপর সঠিক উপায়। ফলস্বরূপ, নিন্দামূলক মত প্রকাশগুলি $(ls | grep ".txt")
অবশ্যই প্রতিস্থাপন করতে হবে *.txt
( এখানে নিবন্ধটি দেখুন )।
ভাল সমাধান
for i in *.txt;do cat $i >> output.txt;done
for i in $(ls *.txt);do cat $i >> output.txt;done
?
ls | grep
ডাউনওয়োটের অধিকারী , কারণ এটি মারাত্মক খারাপ প্রতিষেধক)।
ls *.txt
যদি খুব বেশি ফাইল (আর্গুমেন্টের তালিকা খুব দীর্ঘ ত্রুটি) থাকে তবে ব্যর্থ হবে না ?
শেলের সাথে সর্বাধিক বাস্তব উপায় হল বিড়াল কমান্ড। অন্যান্য উপায় অন্তর্ভুক্ত,
awk '1' *.txt > all.txt
perl -ne 'print;' *.txt > all.txt
cat
পদ্ধতি ব্যবহার করে শেষের লাইনটি এবং সংলগ্ন ফাইলগুলি থেকে প্রথম লাইন মিলবে।
কিভাবে এই পদ্ধতির সম্পর্কে?
find . -type f -name '*.txt' -exec cat {} + >> output.txt
-maxdepth 1
তাই আপনার find
কমান্ডটি যুক্ত করতে হতে পারে ।
sort -u --output="$OUTPUT_FILE" --files0-from=- < <(find "$DIRECTORY_NAME" -maxdepth 1 -type f -name '*.txt' -print0)
type [source folder]\*.[File extension] > [destination folder]\[file name].[File extension]
উদাহরণ স্বরূপ:
type C:\*.txt > C:\1\all.txt
এটি সি এর মধ্যে সমস্ত টেক্সট ফাইলগুলি নেবে: old ফোল্ডার এবং এটিকে সি: \ 1 ফোল্ডারের মধ্যে all.txt এর নামে সংরক্ষণ করবে
অথবা
type [source folder]\* > [destination folder]\[file name].[File extension]
উদাহরণ স্বরূপ:
type C:\* > C:\1\all.txt
এটি ফোল্ডারে উপস্থিত সমস্ত ফাইলগুলি নেবে এবং সেখানে সি: \ 1 \ all.txt তে সামগ্রী রাখবে
আপনি এটির মতো করতে পারেন:
cat [directory_path]/**/*.[h,m] > test.txt
যদি আপনি {}
যে ফাইলগুলি সন্ধান করতে চান তার এক্সটেনশানটি অন্তর্ভুক্ত করতে ব্যবহার করেন তবে সিকোয়েন্সিংয়ের সমস্যা আছে।
আপনি যখন এমন কোনও সমস্যায় পড়েন যেখানে এটি all.txt কে all.txt এ বিড়াল করে, আপনি চেষ্টা করতে পারেন all.txt বিদ্যমান আছে কি নেই, যদি উপস্থিত থাকে তবে সরান
এটার মত:
[ -e $"all.txt" ] && rm $"all.txt"
cat *.txt > all.txt
>
কমান্ড all.txt ওভাররাইট করে যদি এটি বিদ্যমান থাকে তবে >>
বিদ্যমান ফাইলে ডেটা যুক্ত হয়
এগুলি সবই বাজে ....
ls | grep *.txt | while read file; do cat $file >> ./output.txt; done;
সহজ জিনিস।
find . -iname "*.txt" -maxdepth 1 -exec cat {} >> out.txt \;