Ls কমান্ডের ফলস্বরূপ সমস্ত ফাইল আমি কীভাবে খুলব?


10

আমি সমস্ত পাঠ্য ফাইল খুলতে চাই যা পাঠ্য সম্পাদক ব্যবহার করে ls কমান্ডের ফলাফল। আমি এটা কিভাবে করবো?

উত্তর:


12

গিলস ঠিক একদম সঠিক , lsউদাহরণস্বরূপ ফাইল নাম গ্লোব সম্প্রসারণ কমান্ড লাইনে কিছু না ব্যবহার করেই খুব সহজ করা যেতে পারে ls! যদি আপনার তথাকথিত "পাঠ্য ফাইলগুলিতে" ফাইলগুলির নামের এক্সটেনশনগুলি সনাক্ত করতে হয় তবে আপনি এই জাতীয় কিছু করতে পারেন:

editor-command *.txt

কোনও কৌশল প্রদর্শনের স্বার্থে, আরও জটিল উদাহরণটি ব্যবহার করতে দিন যা কেবলমাত্র কোনও ফাইলের নামের পরিবর্তে সামগ্রীর উপর ভিত্তি করে ফাইল ফাইল ম্যাচ এবং ফাইলগুলি খোলার সাথে করা যায়নি। বলুন যে আপনি সমস্ত ফাইল খুলতে চেয়েছিলেন যার মধ্যে "কন্টেন্ট-টাইপ" স্ট্রিং রয়েছে।

ধরে নিলে আপনার সম্পাদক একাধিক ফাইলের নাম গ্রহণ করবে এবং সেগুলি একবারে পৃথক বাফারে একবারে খুলবে বা ধারাবাহিকভাবে এগুলির মাধ্যমে সেভাবে কাজ করবে, আপনি সহজেই চালাতে পারবেন:

editor-command $(grep -i content-type)

এখন আপনার আসল প্রশ্নে ফিরে আসুন, আসুন আপনাকে বলুন যে সেগুলি পাঠ্য ফাইল কিনা তা তাদের নামের উপর ভিত্তি করে নয়। এরপরে এগুলি সনাক্ত করার জন্য আপনাকে অন্য একটি প্রোগ্রাম ব্যবহার করতে হবে, তারপরে সেই ডেটার ভিত্তিতে এগুলি খুলুন। প্রোগ্রামটি fileআপনাকে বলবে যে কোনও ধরণের ফাইল কী, এবং আপনি কেবলমাত্র পাঠ্য ফাইলের জন্য তালিকাটি গ্রেপ করতে পারেন এবং তারপরে কেবলমাত্র মিলে যাওয়া ফাইলের নামগুলি খুলুন:

editor-command $(file -ni * | grep 'text/plain' | cut -d: -f1)

$()কনস্ট্রাক্টের ভিতরে কমান্ড চেইনের আউটপুট সম্পাদকের আর্গুমেন্ট হিসাবে ব্যবহৃত হবে। আমি মাঝে মাঝে এটি দুটি পর্যায়ে করি। বলুন যে আমি কিছু সেট ফাইল সন্ধান করছি এবং নিজেকে "কন্টেন্ট-টাইপ" স্ট্রিংযুক্ত প্রতিটি এক্সএমএল ফাইলের একটি তালিকা পেতে পারি

find -type f -iname '*xml' | xargs grep -Hi 'content-type' |  cut -d: -f1

... এবং সিদ্ধান্ত নিন আমি তাদের খুলতে চাই। আমি তখন সর্বশেষ কমান্ডের ইতিহাস শর্টকাট ব্যবহার করি এবং এটি করি:

vim $(!!)

... পূর্ববর্তী কমান্ডের সমস্ত ফলাফল ভিএমতে খুলতে, আমার প্রিয় সম্পাদক।

যদি আপনার সম্পাদক একসাথে কেবল একটি ফাইল স্বীকার করে নেয় এবং আপনাকে সম্পাদকদের স্পাও করা দরকার হয়, আপনি স্টেডিওর প্রয়োজনীয় টার্মিনাল ভিত্তিক সম্পাদক ব্যবহার করছেন কিনা তার উপর নির্ভর করে জেএমডিটির উত্তরেxargs অথবা forলুপের একটি বৈকল্পিক ব্যবহার করতে হবে ।



@ গিলস: যথাযথভাবে উল্লেখ করা হয়েছে, আমরা প্রত্যেকে দেখতে পাইনি এমন সুস্পষ্ট ইঙ্গিত করার জন্য ধন্যবাদ। @ c0smikdebris নোট করুন যে আমি আপনার উত্তরটি সম্পূর্ণরূপে পুনর্লিখন করছি যাতে একটি মামলা সহ যদি আপনার কাছে কোনও ফাইলের নামের সাথে টেক্সট হয় কেবল তার সাথে মেলে না obvious
কালেব

$ () হ'ল আমি আসলে যা খুঁজছিলাম। আমার উল্লেখ করা উচিত ছিল যে আমি উদাহরণ হিসাবে এখানে ls ব্যবহার করছি। উভয় উত্তর +1।
c0smikdebris

"আমার প্রিয় সম্পাদক"। @ কালেব নির্দিষ্ট করার দরকার নেই, যেহেতু এটি উত্তরের শুরু থেকেই কম-বেশি পরিষ্কার, আহা! সর্বকালের সেরা সম্পাদক!
এনরিকো মারিয়া ডি অ্যাঞ্জেলিস

4

বর্তমান ডিরেক্টরিতে কিছু .txt(যেমন *.txt) নামে পরিচিত সমস্ত ফাইল খোলার জন্য :

$EDITOR *.txt

যেখানে $EDITORআপনার প্রিয় এডিটর, যেমন gedit *.txt, nano *.txt, vim *.txt, emacs *.txtবা যাই হোক না কেন। কেবলমাত্র *বর্তমান ডিরেক্টরিতে সমস্ত ফাইল মেলে ব্যবহার করুন ।

লক্ষ্য করুন যে lsকমান্ড জড়িত নেই। কাজটি lsআসলে ফাইলগুলির একটি তালিকা প্রদর্শন করা নয়, যদিও আপনি যখন কোনও ডিরেক্টরিতে এটি চালু করেন তখনই এটি ঘটে। lsফাইলের বৈশিষ্ট্য (পরিবর্তনের সময়, অনুমতি, আকার এবং আরও কিছু) প্রদর্শন করতে যেখানে দরকারী। নির্দিষ্ট ওয়াইল্ডকার্ড প্যাটার্নের সাথে মেলে গুচ্ছ ফাইলগুলিতে কিছু করার জন্য, শেলের গ্লোবগুলি যথেষ্ট।

উন্নত পর্যাপ্ত সম্পাদক আপনাকে এটি ভিতরে থেকে করতে দেয়। উদাহরণস্বরূপ, ইম্যাক্সে, কেবলমাত্র সাধারণ ফাইল খোলার কমান্ড ব্যবহার করুন ( C-x C-f) এবং প্রবেশ করুন *.txt

আপনি যদি সাব ডাইরেক্টরিগুলিতে, zsh বা ব্যাশ ≥4-তে ফাইলগুলিও মেলাতে চান তবে আপনি ব্যবহার করতে পারেন $EDITOR **/*.txt


এটি আসলে সম্পাদক-নির্দিষ্ট। কোনও গ্যারান্টি নেই যে সমস্ত সম্পাদক তাদের মুক্ত কমান্ড-লাইন যুক্তিগুলিকে ফাইলগুলি খোলার জন্য হিসাবে বিবেচনা করবে, বা একসাথে একাধিক ফাইল খোলার পক্ষে সমর্থন করবে না।
jmtd

2

এটি আপনার পাঠ্য সম্পাদকের কিছু সংক্ষিপ্তসার উপর নির্ভর করে। উন্নত সম্পাদকরা সম্ভবত এক মুহুর্তে কমান্ড লাইন থেকে একাধিক ফাইলগুলি খোলার পরিচালনা করতে পারবেন। তবে বলুন, উদাহরণস্বরূপ, আপনার সম্পাদক (নীচে আমার উদাহরণগুলিতে D সম্পাদনা) একবারে কেবল একটি খুলতে পারে। আপনি পাইপ একটি যথাযথ আউটপুট উচিত findমধ্যে xargs। এটি $ সম্পাদক টিটিওয়াই গ্রহণ না করার উপরও নির্ভর করে (সুতরাং, গ্রাফিকাল ব্যবহার করে)

find . -maxdepth 1 -type f -name '*.c' -print0 | xargs -r0n 1 $EDITOR

আপনি যদি কনসোল সম্পাদক ব্যবহার করতে চান তবে শেল লুপটি আরও উপযুক্ত হতে পারে তবে অনেকগুলি অস্বাভাবিক ফাইলের নাম (হোয়াইটস্পেস অক্ষর এবং অন্যান্য বিভিন্ন জিনিসকে সংকুচিত বা প্রতিস্থাপনের মাধ্যমে) ব্যর্থ হলে:

for i in *.c; do $EDITOR "$i"; done


ভাল ধরা - যথাযথভাবে সম্পাদিত।
jmtd

নোট করুন forকেসিং / হোয়াইটস্পেসের অক্ষর পরিবর্তন সহ অনেকগুলি ফাইলের নামের জন্য কেস ব্যর্থ হবে।
jmtd

যেমনটি এখন লেখা হয়েছে, forকেস প্রতিটি ফাইলের নামের সাথে কাজ করবে (সম্ভবত কিছু নাম শুরু হওয়া -বা +কিছু সম্পাদকের নাম বাদে for i in ./*.cএটি ঠিক করে দেবে)।
গিলস 15:59-তে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.