Ls -l के आउटपुट से "कुल <size>" लाइन हटाने का सबसे आसान तरीका क्या है?


14

Google के माध्यम से मुझे सबसे अच्छा मिल सकता है man ls:

ls -l | grep -v '^total'

वहाँ कुछ मैं झंडे में याद आ रही है ls?

इसके अलावा, k -h ध्वज की परवाह किए बिना कुल आकार में क्यों है? खरोंच, ऐसा लगता है कि ऐसा करता है, यकीन नहीं होता कि मैं तब क्या देख रहा था।


4
शायद थोड़ा और अधिक कुशल हो सकता है ls -l | tail -n+2, बाकी के लिए मेरे पास कोई जवाब नहीं है।
enzotib

मुझे एनजोतिब का तरीका ज्यादा पसंद है। सुझाव: इसे एक उपनाम के रूप में स्थापित करें और इसे नाम दें lsl। सिर्फ 3 अक्षर;) ओह और ls -lh मुझे 1.2K स्टाइल के आकार दिखाता है।
रिनविंड सेप

मुझे लगता है कि आपको सबसे आसान तरीका मिल गया है।
रॉबर्ट

जवाबों:


11

के स्रोत कोड में खोज coreutils, मुझे पता चला कि निर्देशिकाओं पर विकल्प totalका उपयोग करते समय हमेशा प्रदर्शित किया जाएगा ।-l

-dनिर्देशिका सामग्री छुपा के बजाय प्रविष्टियों को सूचीबद्ध करने के विकल्प का उपयोग करना total। लेकिन अगर आप बिना तर्क के (या किसी निर्देशिका पर) इसे चलाते हैं, तो यह केवल निर्देशिका को दिखाएगा और इसकी सामग्री को नहीं। इसलिए, आपको वाइल्डकार्ड की आवश्यकता है। *सभी फ़ाइलों और .*मैचों के साथ-साथ छिपी हुई फ़ाइलों से मेल खाता है (जो -aविकल्प के साथ मेल खाता है ):

ls -ld * .*

के रूप में -hविकल्प, यह मेरे लिए काम करता है। 1118360 बाइट्स 1.1M के रूप में दिखाई देते हैं। 1024 से छोटी फाइलें बाइट्स में दिखाई देती हैं।


1
वास्तव में -d प्रविष्टियों के बजाय निर्देशिकाओं को सूचीबद्ध करता है।
H2ONaCl

@broiyan आप lsमैनुअल पेज को पत्र पर ले जा सकते हैं या इस पर विचार ls /कर सकते हैं : इसकी व्याख्या "प्रविष्टि की सूची के रूप में की जा सकती है /यदि यह एक फ़ाइल है या निर्देशिका की निर्देशिका सामग्री है /"। का उपयोग करके -dअंतिम स्थिति को हटा दिया जाता है और हमेशा निर्देशिका सामग्री के बजाय प्रविष्टि को प्रिंट करेगा। यदि कोई पथ फ़ाइल या निर्देशिका है, तो यह कोई फर्क नहीं पड़ता।
लेकेन्स्टाइन

अगर मैं कर सकता हूँ तो मैं इसे फिर से बढ़ाऊंगा
dps

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


हालाँकि, अगर आप कई फ़ाइलनामों को ls में पास करते हैं तो यह काम नहीं करेगा।
स्पर्हाक

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'

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.