আমি কীভাবে ls দ্বারা মুদ্রিত ফাইলের সংখ্যা সীমাবদ্ধ করব?


89

lsকমান্ডে তালিকাভুক্ত ফাইলের পরিমাণ সীমিত করার কোনও উপায় আছে কি ?

আমি দেখা করেছি:

ls | head -4

তবে মৃত্যুদন্ড কার্যকর করতে headবা tailসম্পাদন করার জন্য আমাকে lsএক্সিকিউশন শেষ করার জন্য অপেক্ষা করতে হবে , এবং প্রচুর পরিমাণে ফাইল নিতে পারে এমন প্রচুর পরিমাণে ফাইলের ডিরেক্টরিতে।

আমি একটি lsকমান্ড কার্যকর করতে চাই যা এই headকমান্ডটি ব্যবহার না করে সীমাবদ্ধ করে ।

উত্তর:


109

আপনি চেষ্টা করেছেন?

ls -U | head -4

এটি বাছাই করা এড়ানো উচিত, যার কারণ সম্ভবত lsএটি এত দীর্ঘ সময় নিচ্ছে।

https://stackoverflow.com/questions/40193/quick-ls-command


"ls -U" এখনও মুদ্রণের আগে পুরো ডিরেক্টরিটি পড়ে ... আমি মনে করি যে ফাইলগুলিকে সীমাবদ্ধ করতে আমি একটি ছোট স্ক্রিপ্ট লিখব, তবে সেই প্রশ্ন লিঙ্কটি ভাল পড়ার উপাদান material ধন্যবাদ নিকো।
AndreDurao

5
অ্যান্ড্রেডুরাও, জিএনইউ ls -Uমুদ্রণের আগে পুরো ডিরেক্টরিটি পড়ার প্রয়োজন হয় না। strace -e getdents,write ls -U > /dev/nullউদাহরণস্বরূপ একটি বৃহত ডিরেক্টরিতে চেষ্টা করুন ।
স্টাফেন চেজেলাস

কেবলমাত্র একটি নোট: আপনি যদি
ওএসএক্সের স্ট্রেসটি ডিট্রেসের

12

যদি আপনার সংস্করণটিতে জিএনইউ এলএস এরls মতো ফাইলগুলি বাছাই না করার উপায় থাকে তবে এটি ব্যবহার করুন। কোনও বিকল্প নেই, প্রথমে সমস্ত ফাইল পড়বে, তারপরে নামগুলি বাছাই করবে, তারপরে মুদ্রণ শুরু করবে।-Uls

আর একটি সম্ভাবনা চালানো find, যা নামগুলি এটি সন্ধান করে সেগুলি মুদ্রণ করে।

find . -name . -o -prune | head

(নোট করুন যেহেতু লাইনগুলিতেhead কাজ করছে , এটি ধরে নেয় যে ফাইলের নামগুলিতে নতুন লাইনের অক্ষর নেই don't


1
নোট করুন যে GNU এর ক্ষেত্রে find(ব্যস্তবক্স বা উত্তরাধিকারী findবা GNU এর বিপরীতে ls -U), মনে হয় এটি মুদ্রণ শুরু করার আগে পুরো ডিরেক্টরিটি পড়ে।
স্টাফেন চেজেলাস

4

সম্ভবত আপনি ছাড়া অন্য কোনও সরঞ্জামের প্রয়োজন আছে ls?

উদাহরণস্বরূপ, র্যান্ডাল শোয়ার্টজের বড় ডিরেক্টরিতে ব্যবহারperl সম্পর্কে একটি ব্লগ এন্ট্রি রয়েছে যাতে আপনার প্রয়োজনীয়তা পূরণ করে এমন কিছু নির্মাণের জন্য কিছু ইঙ্গিত থাকতে পারে।

ব্লগ পোস্টে রান্ডাল ব্যাখ্যা করে যে উভয়ই lsএবং যে findকোনও মুদ্রণের আগে সমস্ত ডিরেক্টরি এন্ট্রিগুলিতে পড়ার চেষ্টা করে, যখন perlতিনি প্রস্তাবিত সমাধানটি দেয় না।


আমিও ভাবলাম যে এটি সর্বোত্তম বিকল্প হতে পারে, কারণ উভয়ই ls এবং মুদ্রণের আগে পুরো ডিরেক্টরিটি পড়েন read আমি মুক্তার পরিবর্তে এটি করার জন্য একটি রুবি স্ক্রিপ্ট লেখার পরিকল্পনা করছিলাম, সেই আফ্রেশ 1 এর জন্য ধন্যবাদ!
AndreDurao

1
@ আন্ড্রেডুরাও perlসম্ভবত বা এর readdir(3)মতো ব্যবহার করে । জিএনইউ / লিনাক্সের বর্তমান সংস্করণগুলিতে কমপক্ষে একটি বৃহৎ গণনা সহ সিস্টেম কলকে কল করে (এটি আসলে কম্পিউটার কলগুলির সংখ্যা হ্রাস করে পারফরম্যান্সকে সর্বোত্তম করে তোলে)। তবে আপনার ক্ষেত্রে, যদি আপনি কম ফাইল চান তবে মনে হয় আপনাকে বাইসাস করে BSDs বা সিস্টেম কলটি ব্যবহার করতে হবে। lsfindreaddir(3)getdents()readdirgetdirentries(3)getdents(2)
স্টাফেন চেজেলাস

3

পারফরম্যান্স যদি উদ্বেগের বিষয় না হয় (যেমনটির একটি সদৃশ হিসাবে এটি বন্ধ করা হয়েছিল এমন প্রশ্নে), এবং আপনি প্রথম এন ফাইলগুলি (আউটপুটটির প্রথম এন লাইনের বিপরীতে ls) অ-তালিকার তালিকায় তালিকাবদ্ধ করতে চান ফাইল নাম অনুসারে বাছাইকৃত ফাইলগুলি এর মাধ্যমে zshআপনি ব্যবহার করতে পারেন:

ls -ld -- *([1,4])

প্রথম 4 টি ফাইলের তালিকা তৈরি করতে। zshএখনও ডিরেক্টরি পূর্ণ কন্টেন্ট পড়তে হবে যদিও, এমনকি যদি আপনি তা জানাও সঙ্গে বাছাই করতে না *(oN[1,4])(নোট যে ls এছাড়াও সেই তালিকাটি বাছাই করে)।


1

হয়তো কম ভাল আপনার প্রয়োজন জন্য উপযুক্ত?

 ls /usr/bin | less

আমার জন্য, এটি ক্লাসিক এইচডিডি সহ 5 বছরের পুরানো ল্যাপটপে তাত্ক্ষণিকভাবে কাজ করে তবে মাথাটি তত দ্রুত fast

আপনি এর lessসাথে অকাল শেষ করতে পারেন q

আমি অনুমান করি যে 1s বিলম্বের উত্স সম্পর্কে আপনার ধারণাটি ভুল, তবে এটি সম্ভবত আপনার ইউনিক্স-গন্ধ বা শেল, কম বা হেড কমান্ডের উপর নির্ভর করে।

লিনাক্সে, জিএনইউ-এলএস সহ,

 ls -R /usr | less 

আমার জন্য তাত্ক্ষণিকভাবে আউটপুট তৈরি শুরু করে, যখন পুরো আউটপুটটি অন-চলমান থাকে - তাই কম শুরুর আগে এটি অবশ্যই শেষ হয় না। আউটপুটটির উপর নির্ভর করে আপনার যদি 1s বা সম্ভবত আরও বেশি দিন স্থির হতে থাকে তবে আপনি পরীক্ষা করতে পারেন।

আমি অনুমান করি যে আপনার 1s দেরির আলাদা কারণ রয়েছে, সম্ভবত এইচডিডি ঘুমাতে চলেছে এবং একটি জাগ্রত প্রয়োজন?

খুব কম ফাইলের জন্যও কি আপনার এত বিলম্ব রয়েছে?


ধন্যবাদ তবে আমি এরকম কিছু খুঁজছিলাম না। ঠিক যেমন মাথা কম কার্যকর হয় পুরো lsফলাফল ফলাফল সঙ্গে। আমি ফলাফলের পরিমাণ সীমাবদ্ধ করার জন্য নিজেই উপায় পাওয়ার সন্ধান করছিলাম।
আন্দ্রেডুরাও

@ আন্ড্রেডুরাও: আমার মন্তব্যগুলি উত্তরে সরিয়ে নিয়েছে।
ব্যবহারকারী অজানা

0
ls -lrth | tail

ls -lrth | tail -n 10

ls -lrth | grep *.gz | tail

আমি দুঃখিত অভিষেক, তবে এই প্রশ্নের মূল বক্তব্য হ'ল বাশকে lsআদেশ দেওয়া। পাইপ কমান্ডের মত grep, head, tailবা অন্যদের পর মৃত্যুদন্ড কার্যকর করা হয়ls
AndreDurao

0
$ cut -f 1,n filename

প্রথম nফাইল আনার কাজটি করবে । nআপনি নিষ্ক্রিয় করতে চান এমন ফাইলগুলির সংখ্যা। সুতরাং সম্পূর্ণ কোড হবে:

$ ls|cut -f 1,n file

1
ls | cut -f 1,n fileকমান্ড আপনাকে সুপারিশ পাঠ্যের প্রতিটি লাইনে আউটপুট প্রথম এবং n তম ক্ষেতে উঠবে fileসম্পূর্ণরূপে আউটপুট উপেক্ষা হবে, এবং ls। এটি আসল পোস্টারের যা প্রয়োজন তা করে না।
telcoM

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