পাঠ্য ফাইলগুলিতে কীভাবে যোগদান করবেন?


21

আমি txt হিসাবে অনেক নথি সংরক্ষণ করেছি। আমি এগুলি একসাথে মুদ্রণ করতে চাই তাই প্রথমে আমি তাদের একক ফাইলে একসাথে চাই। এই ক্ষেত্রে আদেশের কোনও গুরুত্ব নেই।

আমি এমন একটি সমাধান চাই যা ফাইলগুলির নামগুলি মেশানোর জন্য টাইপ করার সাথে জড়িত না, তবে এটি কেবলমাত্র ফোল্ডারের মধ্যে সমস্ত txt ফাইলগুলিকে মার্জ করে।

আমি কি কোনও আদেশ বা কিছু জিইআইআই দিয়ে এটি করতে পারি?


আমি এখানে তাকান । কীভাবে ব্যবহার করবেন তা জানেন না join

উত্তর:


43

catআউটপুট পুনঃনির্দেশের সাথে ব্যবহার করুন । শব্দবিন্যাস: cat file [file] [[file] ...] > joined-file

মাত্র দুটি ফাইলের উদাহরণ (আপনার আরও অনেকগুলি থাকতে পারে):

$ echo "some text in a file" > file1
$ echo "another file with some text" > file2
$ cat file1 file2 > mergedfiles
$ cat mergedfiles
some text in a file
another file with some text

আপনার কাছে "অনেকগুলি নথি" থাকলে শেল গ্লোববিং (প্যাটার্ন) ব্যবহার করুন:

cat input-files-dir/* > joined-file

এটি সেই ডিরেক্টরিতে থাকা সমস্ত ফাইলকে বর্তমান ডিরেক্টরিতে যোগ দেবে (এটি নিজেই আউটপুট ফাইলের সাথে মেলে তা রোধ করে)। এটি catআউটপুট পুনঃনির্দেশের ব্যবহারের জন্য সম্পূর্ণ স্বাধীন - এটি কেবলমাত্র সমস্ত ফাইলকে যুক্তি হিসাবে সরবরাহ করে cat


নথির ধরণ

আপনি যেমন কাগজ এবং টেপ দিয়ে যাবেন ঠিক তেমনি এটি ফাইলগুলিকে আঠালো (যোগদান) করবে। এটি হ্যান্ডেল করতে সক্ষম প্রকৃত ফাইল ফর্ম্যাট সম্পর্কে চিন্তা করে না। এটি পাঠ্য ফাইলগুলির জন্য কাজ করবে তবে পিডিএফ, ওডিটি ইত্যাদির জন্য নয়, ভাল, এটি তাদের একসাথে আঠালো করে তুলবে, তবে এটি আর বৈধ পিডিএফ / ওডিটি নয়।


যোগদানের আদেশ

যেমন ফোবিবস উল্লেখ করেছে শেল গ্লোব্বিংয়ের ফলে ফাইলের নাম বর্ণমালা অনুসারে হবে। এইভাবে বাশ এবং শেল গ্লোববিং কাজ করে।


input file is output fileত্রুটি সম্পর্কে সংযোজন

যখন ইনপুট ফাইলগুলির প্যাটার্নটি আউটপুট হিসাবে একই ফাইলটির সাথে মেলে, এটি ত্রুটির কারণ হবে। এটি একটি সুরক্ষা বৈশিষ্ট্য। উদাহরণ: cat *.txt > out.txtদ্বিতীয়বার চালানো এর কারণ হবে।

আপনি এটি সম্পর্কে কি করতে পারেন:

  • আউটপুট নামের সাথে মেলে না, প্রকৃত ইনপুট ফাইলগুলির সাথে মেলে আরও সুনির্দিষ্ট প্যাটার্ন চয়ন করুন। উদাহরণ: *.txtআউটপুট ফাইল সহ ইনপুট ফাইলের প্যাটার্নটি output.outসংঘর্ষ করবে না।
  • বিভিন্ন ডিরেক্টরিতে কাজ করুন। উপরের উদাহরণে আমি input-files-dirসমস্ত ফাইল রাখার জন্য একটি পৃথক ডিরেক্টরি এবং বর্তমান ওয়ার্কিং ডিরেক্টরিতে আউটপুট ব্যবহার করেছি । এটি এই ত্রুটিটি পাওয়া অসম্ভব করে তোলে।

@ সিপ্রিকাস হ্যাঁ, তবে এটি খুব প্রাথমিক শেল গ্লোব্বিং (নিদর্শন)। lsকেবল মেলে তালিকাবদ্ধ করতে আপনার নিদর্শনগুলি ব্যবহার করে দেখুন । যেমন ls *.txtকি মিলছে তা দেখতে।
gertvdijk

2
@ সিপ্রিকাস কীভাবে বিড়াল সম্পর্কে * .txt> UsedFile.txt?
সাদি

1
এটি আসলে আরও সাধারণ জ্ঞান, বিড়াল প্রথমে সমস্ত .txt ফাইলগুলি ধরে এবং দ্বিতীয়টি এটিতে যোগ দেয় এবং তৃতীয়টি এটি একটি নতুন .txt ফাইল তৈরি করে যা প্রথম ধাপে ধরা যায় না ;-)
সাদি

1
@ সিপ্রিকাস এটি কেবল ফাইলগুলিতে যোগদান করে। আপনি পছন্দ মতো আঠালো এবং টেপ দিয়ে কাগজের টুকরা ব্যবহার করে! পিডিএফ-এর মতো বেশিরভাগ "ডকুমেন্টস" ফাইল ফর্ম্যাটগুলি এটিকে অনুমতি দেয় না। একটি পিডিএফ সম্পাদক ব্যবহার করুন। তবে যাইহোক, আপনার প্রশ্নটি পাঠ্য ফাইলগুলি সম্পর্কে ছিল ।
gertvdijk

1
আমি পুরোপুরি বুঝতে পারি যে আপনি প্রস্তাবিত পদ্ধতিটি (একটি সাবডির তৈরি করা, ফাইলগুলি সরানো এবং তারপরে যোগদান) কোনও কোনও ক্ষেত্রে সম্ভবত আরও ভাল উপায় হতে পারে। তবে যদি আমরা কেবল বর্তমান ডিরেক্টরি বিড়াল সমস্ত টেক্সট ফাইল (সমস্ত .txt এক্সটেনশন থাকা) যোগদান করতে চাই তবে কাজটি পুরোপুরি সঠিকভাবে সম্পাদন করে। আমি এটি কৌতূহল থেকে সবেমাত্র এটি পরীক্ষা করেছি এবং এটি কাজ করে এবং মনে হয় সিপ্রিকাসও একই ফলাফল পেয়েছে। (এবং সিস্টেমটি অভিযোগ শুরু করেছে যে আমাদের এখানে চ্যাট করা উচিত নয়, অন্যথায় আমি আপনাকে জিজ্ঞাসা করব যে আপনি কীভাবে কোনও সরঞ্জামদণ্ড ছাড়াই এই মন্তব্যে বিন্যাসটি ব্যবহার করতে পারেন তা এই শিক্ষানবিশ শিখিয়ে দিতে পারেন ;-)
সাদি

12

এটি করার একটি সহজ উপায় হ'ল বিড়াল ব্যবহার করে:

cat file1 file2 > joined_file

আপনি কেবল ইস্যু করলে cat file1 file2আপনি উভয় ফাইল স্ট্যান্ডার্ড আউটপুটে দেখতে পাবেন। ব্যবহার করে >আপনি কেবল একটি ফাইলের কাছে স্ট্যান্ডার্ড আউটপুট পুনর্নির্দেশ করছেন। এটি অন্য কমান্ডের সাথেও কাজ করবে।


দয়া করে প্রশ্নটি পড়ুন। আপনি পৃথক ফাইলের নাম নির্দিষ্ট করতে বলছেন, যা ওপি বিশেষত করতে চায় নি!
শ্রী

2
এটি মূল প্রশ্নে ছিল না । আরও সম্পূর্ণ উত্তর প্রদর্শিত হওয়ার পরে আমি আমার উত্তর আপডেট করেছি।
জর্গে সুরেজ ডি লিস

@ জর্জেসুরেজ্লেলিস যদিও এই উত্তরটি তার প্রশ্নের সাথে ওপিতে সরাসরি সহায়তা করে না, দয়া করে মনে রাখবেন যে এই উত্তরটি সম্ভবত অন্য কাউকে সহায়তা করবে যাঁদের কেবল কয়েকটি ফাইল রয়েছে যা তারা মার্জ করতে চান। (ওহে ওহে, আমার মতো! আপনাকে ধন্যবাদ! ^ - ^) +1
সৌতা

@ জর্জেসুরেজ্লে লিস আসলেই। আপনি প্রশ্নের 2 টি পুনর্বিবেচনার উত্তরটি পুরোপুরি ঠিকঠাক দিয়েছেন। কয়েক মিনিট পরে, 3 পুনর্বিবেচনা উত্তরগুলির প্রয়োজনীয়তা পরিবর্তন করে।
gertvdijk

5

একটি সাধারণ লুপ দিয়ে এটি করুন:

for i in *.txt; do cat "$i" >> complete.txt; done

>> ফাইল সংযোজন।

দ্রষ্টব্য: যদি কোনও কারণে আপনাকে কমান্ডটি আবার চালাতে হয়, আপনাকে মুছে ফেলতে হবে complete.txt, অন্যথায় আপনি নিজেই ফাইলটি লিখতে চান, যা কার্যকর হয় না।


5
এটি পাশাপাশি কাজ করবে, তবে আপনি যদি যুক্তিগুলি ব্যবহার করতে পারেন তবে আমি কোনও লুপের প্রয়োজন দেখছি না cat
gertvdijk

1
হ্যাঁ, আপনি অবশ্যই বলেছেন। আমি সর্ডার অর্ডারটি ব্যবহারের বিষয়ে নিশ্চিত নই cat *.txt। লুপের জন্য বাছাই করা উচিত।
ফোবিস


হ্যাঁ, এটি ঠিক একই শেল গ্লোবিং করছে। আপনি এটি forবাশে বা অন্য কোথাও ব্যবহার করেছেন কিনা তা বিবেচ্য নয়।
gertvdijk

4

আপনি যে ফাইলগুলি শেষ করতে চান তা যদি শেষ হয় তবে .txtএটিকে সহজ রাখুন:

cat *.txt > combined.txt

ডিরেক্টরিতে যদি কেবল পাঠ্য ফাইল থাকে তবে এটিও সহজ:

cat * > combined.txt

(দ্রষ্টব্য যে একবার আপনি তৈরি করার পরে combined.txt, এটি পুনরায় করা এটিকে বিস্তারে অন্তর্ভুক্ত করবে *, বিজোড় আচরণের দিকে পরিচালিত করবে)।

আপনি যদি ডিরেক্টরিতে কিছু ফাইল বাছাই করতে চান এবং অন্যকে না, ফাইলের নামগুলি আপনাকে কোনটি চান তা আলাদা করার অনুমতি দিলে সবচেয়ে ভাল। যদি না হয়, আপনি অভিনব পেতে পারেন find। তবে আমি সন্দেহ করি আপনাকে আরও দূরে যেতে হবে।


thnx। আপনি যদি গৃহীত উত্তরের মন্তব্যগুলিতে লক্ষ্য করেন তবে সাদি মন্তব্যটিতে ঠিক সেটাই পরামর্শ দিয়েছেন suggested আপনার উত্তরটি যদি প্রথম হয় তবে আমার যা প্রয়োজন তা হ'ল। আমারও একবার দেখুন: কাস্টম মেনুতে যুক্ত হয়েছে

সাহায্য করার জন্য ধন্যবাদ. হ্যাঁ, আমি এটি এখন দেখছি, এটি কিছুটা অস্পষ্ট ছিল ...
অ্যালেক্সিস

4

Thunar এ কাস্টম কর্ম স্ক্রিপ্ট দ্বারা লিখিত cipricus একটি অনুরূপ লিখতে আমাকে অনুপ্রাণিত নটিলাস স্ক্রিপ্ট এবং আমি ভেবেছিলাম এটা যারা অন্যদের এই বিষয় উপর উল্লেখের জন্য এই Q & A- তাকান জন্য সহায়ক হতে পারে। সুতরাং এটি এখানে:

#!/bin/sh
#Nautilus Script to join selected text files in a single file and open the joined file with default text editor
#
IFS=$'\n'
FILENAME="JoinedFile_$(date +%Y-%m-%d-%H-%M-%S).txt"
cat "$@" > "$FILENAME"
xdg-open "$FILENAME"

@ ডেভিড ফোস্টার এডিট করার জন্য ধন্যবাদ পুরানো সংস্করণে (আমার সীমাবদ্ধ পরীক্ষার কেসগুলি নিয়ে) আমার কোনও সমস্যা ছিল না এবং আমি এই উন্নত সংস্করণটিতেও কোনও সমস্যা দেখছি না। পূর্ববর্তী সংস্করণে কোনও ত্রুটির কারণে যদি আমি কোনও অসুবিধার সৃষ্টি করি তবে দুঃখিত।
সাদি

এটি ত্রুটিযুক্ত ছিল না, তবে এটিতে একটি অপ্রয়োজনীয় লুপ রয়েছে, যা কোড বোঝা আরও জটিল করে তুলেছিল, ইমো।
ডেভিড ফোস্টার

2

এটি থুনারের কাস্টমসের ক্রিয়াকলাপগুলিতে কাজ করার জন্য এই সমাধানগুলি যুক্ত সম্পর্কিত অন্যান্য জবাবগুলির পরিপূরক এবং তারতম্য।

এগুলির সবগুলি ব্যবহারযোগ্য নয়, তবে কিছু রয়েছে।

আমি ভেবেছিলাম যে থুনারের প্রসঙ্গ মেনু থেকে নির্বাচিত ফাইলগুলি মার্জ করতে সক্ষম হওয়াই সবচেয়ে আকর্ষণীয় হবে ।

এই দ্বারা প্রস্তাবিত হওয়ার পর থেকে একটি পরিবর্তন হয় সাদী করার জন্য একটি মন্তব্যে gertvdijk এর উত্তর :

   cat %N > JoinedFile

কেবলমাত্র নির্বাচিত ফাইলগুলিতে যোগদান করা হবে। পাঠ্য ফাইলগুলিতে উপস্থিতি শর্তগুলি সীমাবদ্ধ করুন।

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


সাদিকে বিশেষ ধন্যবাদ যার মন্তব্যটি আমাকে আমার সমস্যার সবচেয়ে সুস্পষ্ট এবং আপ-টু-পয়েন্ট সমাধান সরবরাহ করেছে।

আমি গৃহীত gertvdijk এর উত্তর নির্ধারক হিসাবে। সাদির মন্তব্যের জন্য এটি কেবল উপলক্ষ ছিল না, তবে এটি অন্যদের কাছে আরও মূল্যবান বলে মনে হচ্ছে, একটি সুগঠিত এবং সম্পূর্ণ সমাধান প্রদান করা (যদিও আমার সিএলআই পড়ার দক্ষতার উপরে কিছুটা হলেও)।


2

আপনি findকমান্ডও চেষ্টা করতে পারেন,

find . -name "*.txt" -type f -exec cat {} + > file

এটি .txtবর্তমান ডিরেক্টরিতে ফাইল খুঁজে পায় এবং catপ্রতিটি প্রতিষ্ঠিত ফাইলে কমান্ড চালায় । অবশেষে পুরো আউটপুট ফাইলের নামে পুনঃনির্দেশিত হয়েছিল file(সরাসরি নিজেই তৈরি করা হয়েছিল)।

ব্যাখ্যা:

.                  # current directory

-name              # helps to find only .txt files.

-type f            # Only files

-exec cat {} +     # helps to run cat command on the founded .txt files.

>                  # Output redirection operator

file               # to store final output.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.