Ls -l এর আউটপুট থেকে "মোট <সাইজ>" লাইন সরানোর সহজতম উপায় কী?


14

গুগল / এর মাধ্যমে আমি যে সেরাটি খুঁজে পেতে পারি তা man lsহ'ল:

ls -l | grep -v '^total'

পতাকাগুলিতে আমি কি অনুপস্থিত কিছু আছে ls?

এছাড়াও, -h পতাকা নির্বিশেষে কেন কেবিতে মোট আকার? এটি স্ক্র্যাচ করে, মনে হয় এটির মতো নয়, আমি তখন কী দেখছিলাম তা নিশ্চিত নয়।


4
সম্ভবত কিছুটা আরও দক্ষ হতে পারে ls -l | tail -n+2, বাকিগুলির জন্য আমার কাছে উত্তর নেই।
এনজোটিব

আমি এনজোটিবের পদ্ধতিটি আরও পছন্দ করি। পরামর্শ: এটি একটি উপাধি হিসাবে সেট আপ করুন এবং নাম দিন lsl। মাত্র 3 টি অক্ষর;) ওহ এবং ls -lh আমাকে 1.2 কে স্টাইলযুক্ত আকার দেখায়।
রিঞ্জউইন্ড

আমি মনে করি আপনি সবচেয়ে সহজ উপায় অর্জন করেছেন।
রবার্ট

উত্তর:


11

এর উত্স কোডটি coreutilsসন্ধান করে আমি জানতে পেরেছি যে ডিরেক্টরিতে বিকল্পটি totalব্যবহার করার সময় সর্বদা প্রদর্শিত হবে ।-l

-dডিরেক্টরি সামগ্রীর আড়ালের পরিবর্তে এন্ট্রি তালিকাভুক্ত করার বিকল্পটি ব্যবহার করা হয় total। তবে আপনি যদি এটি আর্গুমেন্ট ছাড়াই (বা কোনও ডিরেক্টরিতে) চালনা করেন তবে এটি কেবল ডিরেক্টরিটি প্রদর্শন করবে এবং এর সামগ্রীগুলি নয়। অতএব, আপনার ওয়াইল্ডকার্ড দরকার। *সমস্ত ফাইলের সাথে .*মেলে এবং লুকানো ফাইলগুলির সাথেও মেলে (যা -aবিকল্পের সাথে মিলে যায় ):

ls -ld * .*

-hবিকল্প হিসাবে , এটি আমার জন্য কাজ করে। 1118360 বাইটগুলি 1.1M হিসাবে দেখাবে। 1024 এর চেয়ে কম ফাইলগুলি বাইটগুলিতে প্রদর্শিত হয়।


1
প্রকৃতপক্ষে প্রবেশের পরিবর্তে ডিরেক্টরি তালিকাভুক্ত করে।
H2ONaCl

@ ব্রোইয়ান আপনি lsম্যানুয়াল পৃষ্ঠাটি চিঠির কাছে নিতে পারেন বা এটি বিবেচনা ls /করতে পারেন : " /এটি ফাইল বা ডিরেক্টরিতে /যদি ডিরেক্টরি বিষয়বস্তু থাকে তবে এন্ট্রি তালিকা" হিসাবে ব্যাখ্যা করা যেতে পারে । ব্যবহার করা -dসর্বশেষ শর্তটি সরিয়ে দেয় এবং সর্বদা ডিরেক্টরি সামগ্রীর পরিবর্তে এন্ট্রি মুদ্রণ করে। কোনও পাথ ফাইল বা ডিরেক্টরি হলে এটি কোনও ক্ষেত্রেই প্রযোজ্য না।
লেকেনস্টেইন

আমি যদি আবার পারতাম তবে আমি এই উত্সাহটি দিতাম
ডিপিএস

7

lsডিরেক্টরি তালিকা চালানো এড়াতে ওয়াইল্ডকার্ড ব্যবহার করা সাব-ইস্টিমাল, কারণ এটি আপনাকে lsপছন্দ মতো বিকল্পগুলি ব্যবহার থেকে বাধা দেয় --almost-all

এনজোটিবের পরামর্শের মতো , এটি সরানোর সহজতম উপায় হ'ল tailপ্রথম লাইনটি কেটে ফেলা। তবে lsএটি সনাক্ত করবে এটির আউটপুট ইন্টারেক্টিভের পরিবর্তে একটি পাইপ এবং অযাচিত উপায়ে এর ডিফল্টগুলি পরিবর্তন করে। অতএব, এটিকে শক্তিশালী করার জন্য আপনার কয়েকটি বিকল্প যুক্ত করতে হবে:

  • --color=always: রঙ দেখায় রাখা
  • --hide-control-chars: ?নিয়ন্ত্রণ অক্ষরের জায়গায় ফাইলের নামগুলি মুদ্রণ করুন যা কনসোল আউটপুটকে বিশৃঙ্খলা করতে পারে

আমার একটি স্ক্রিপ্ট রয়েছে ~/bin/l(আপনি এতে কোনও বাশ ওরফে ব্যবহার করতে পারেন ~/.bash_aliases):

#!/bin/bash
ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

আপনি lsডিফল্টরূপে চাইলে অন্য যে কোনও বিকল্প যুক্ত করতে পারেন --group-directories-first --time-style='+%FT%T.%N%:::z' --indicator-style=slash


তবে আপনি যদি একাধিক ফাইলের নাম এলএসে পাস করেন তবে এটি কাজ করবে না।
স্পারহাক

3

ls -l *

ছাড়াই আপনাকে "সাধারণত নাম দেওয়া" ফোল্ডার সামগ্রী দেবে total। এটি আপনার প্রয়োজনের জন্য উপযুক্ত হতে পারে। দুর্ভাগ্যক্রমে, এটি আপনাকে dotপূর্বনির্ধারিত ফাইলগুলি দেবে না । যদি আপনি ব্যবহার করেন তবে ls -l * .*আপনি একটি জগাখিচুড়ি পাবেন যেহেতু লিনাক্স গাছটি চলাচল করবে।

নোট উপসর্গটি ফোল্ডারটি বোঝাতে পারে বা একটি ওয়াইল্ডকার্ডের সাথে এর অর্থ উপরের ফোল্ডারটি যাতে এটি আপনাকে ডট প্রিফিক্সড নিয়মিত ফাইলগুলি বেছে নিতে সহায়তা করে না। এটি একটি দুর্ভাগ্যজনক ডিজাইনের সিদ্ধান্ত বলে মনে হয়েছে।


1

$ ls -l [DIRECTORY] | sed 1d
(আউটপুট ফাইলের নাম ধারণ করে)

$ ls -ld [path-to-dir]/*
(আউটপুটে আপেক্ষিক পাথ রয়েছে তবে রঙগুলি সংরক্ষণ করা হবে)

$ ls -l [DIRECTORY] | tail -n +2

$ ls -l [DIRECTORY] | awk 'NR>=1'


দ্রষ্টব্য:
আপনার কাছে "মোট ...." নামে একটি ফাইল থাকলে নিম্নলিখিতটি কাজ করে না

$ ls -l | grep -v '^total'

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