मैं मानव पठनीय आकारों को संख्यात्मक रूप से कैसे हल करूं?


20

उदाहरण के लिए मेरे पास कमांड है जो दिखाता है कि अंतरिक्ष फ़ोल्डर कितना लेता है

du folder | sort -n

यह महान काम करता है, हालांकि मैं मानव पठनीय रूप रखना चाहूंगा

du -h folder

हालाँकि अगर मैं ऐसा करता हूं तो मैं इसे संख्यात्मक नहीं मान सकता।

कैसे जुड़ना है du folderऔर du -h folderआउटपुट को किस रूप में देखना है du folder, लेकिन पहले कॉलम सेdu -h folder

PS यह एक उदाहरण मात्र है। यह तकनीक मेरे लिए बहुत उपयोगी हो सकती है (यदि संभव हो तो)

जवाबों:


11

यहाँ एक अधिक सामान्य दृष्टिकोण है। के उत्पादन में जाओ du folderऔर du -h folderदो अलग अलग फ़ाइलों में।

du folder > file1
du -h folder > file2

प्रमुख हिस्सा यह है: एक उपयुक्त सीमांकक के साथ रेखा द्वारा रेखा file1और file2रेखा।

paste -d '#' file1 file2 > file3

(यह मानते हुए #में प्रकट नहीं होता file1और file2)

अब क्रमबद्ध करें file3। ध्यान दें कि यह file1सामग्री के आधार पर छाँटेगा और file2सामग्री द्वारा संबंधों को तोड़ देगा । प्रासंगिक परिणाम निकालें cut:

sort -n -k1,7 file3 | cut -d '#' -f 2

man sortअन्य विकल्पों पर भी एक नज़र डालें ।


आप इसे बाद में पुन: उपयोग के लिए एक उपनाम के रूप में भी सहेज सकते हैं। ऐसा करने के लिए, निम्नलिखित को नीचे जोड़ें ~/.bashrc:

sorted-du () {
    paste -d '#' <( du "$1" ) <( du -h "$1" ) | sort -n -k1,7 | cut -d '#' -f 2
}

फिर, एक नया टर्मिनल सत्र खोलें और अपने नए उपनाम को निष्पादित करें:

sorted-du /home

मैंने आपके समाधान को उपनाम में बनाने के लिए अंतिम भाग जोड़ा।
सिरचलो

1
एक उपनाम (और फिर उन पर आरएम को कॉल करना) में वास्तविक फ़ाइलों का उपयोग करना वास्तव में बहुत बुरा विचार है ! इस बारे में सोचें कि अगर वास्तव file3में मेरी निर्देशिका में एक फ़ाइल का नाम होगा, तो इसे अधिलेखित कर दिया जाएगा और फिर हटा दिया जाएगा! @SirCharlo मैं इस उत्तर से उपनाम की परिभाषा को हटा रहा हूं और इसे कुछ सुरक्षित के साथ बदल रहा हूं।
jmiserez

खैर Askubuntu.com/a/80248/22308 बस इसके साथsort -h
नाम जी VU

36

कुछ इस तरह की कोशिश करें:

du -h folder | sort -h

वैकल्पिक: -nसंख्यात्मक छँटाई के लिए

नोट: -hसॉर्ट का विकल्प केवल उबंटू के नए संस्करणों में मौजूद है।


3
संस्करण
there.१

1
यह इंगित करने के लिए स्टीबर्ट का धन्यवाद कि सॉर्ट कमांड को सॉर्ट से बेहतर किया गया है --version = 8.17 यह Ubuntu के नए संस्करणों के लिए सबसे अच्छा उत्तर है।
कैट एम्स्टर्डम

यह स्वीकार किया जाना चाहिए कि यह क्लीन-शूट का कारण है जो ओपी को हल करता हैsort -h
नाम जी VU

4

यह उत्तर उबंटू के 10.04.4LTS और निचले संस्करणों के लिए मान्य है ।

दुर्भाग्य से सटीक उत्तर जो KMG की तरह कठिन और जटिल है:

आप संपूर्ण du कमांड को एक के साथ उपनाम दे सकते हैं जो इस का उपयोग करके मानव पढ़ने योग्य है

alias duf='du -sk * | sort -n | perl -ne '\''($s,$f)=split(m{\t});for (qw(K M G)) {if($s<1024) {printf("%.1f",$s);print "$_\t$f"; last};$s=$s/1024}'\'

जो मुझे यहां मिला

http://www.earthinfo.org/linux-disk-usage-sorted-by-size-and-human-readable/

फ़ोल्डर में बस सीडी आप जानना चाहते हैं तो duf

आप इस duf उर्फ ​​को अपने /home/user/.profile के अंत में जोड़ सकते हैं ताकि duf कमांड अर्ध-परमानेंट हो सके

परिणाम:

user@hostname:~$ duf
0.0K  Documenten
0.0K  Muziek
0.0K  Openbaar
0.0K  Sjablonen
0.0K  Video's
4.0K  backup_db.sql.g
4.0K  examples.desktop
12.0K xml printer ticket
52.0K hardinfo_report.html
152.0K    librxtxSerial.so
2.7M  jpos
4.4M  nxclient_3.5.0-7_amd64.deb
6.4M  nxnode_3.5.0-4_amd64.deb
6.8M  Downloads
7.4M  nxserver_3.5.0-5_amd64.deb
12.4M NetBeansProjects
18.1M mysqlworkbench.deb
28.3M Afbeeldingen
45.8M ergens-20110928-18.sql.gz
60.5M 2012-06-02ergens_archive.tar.gz
65.5M 2012-08-26ergens_archive.tar.gz
65.6M 2012-08-28ergens_archive.tar.gz
65.6M 2012-08-29ergens_archive.tar.gz
65.7M 2012-08-30ergens_archive.tar.gz
113.0M    Bureaublad
306.2M    ergens-20110928-18.sql

यहाँ क्यों du -sch /var/* | sort -nकाम करता है MKKMMKKMMK की छँटाई नहीं देखता

user@hostname:~$ du -sch /var/* |sort -n

0 /var/crash
0 /var/local
0 /var/lock
0 /var/opt
8,0M  /var/backups
12K   /var/games
16K   /var/tmp
17M   /var/log
68M   /var/cache
104K  /var/spool
144K  /var/run
351M  /var/lib
443M  totaal
704K  /var/mail

मैंने gnu-core डेवलपर्स के लिए एक सॉर्ट सुविधा के साथ du -h फ़ंक्शन को बेहतर बनाने के लिए अनुरोध किया है। कीड़े के माध्यम से-coreutils@gnu.org
कैट एम्स्टर्डम

+1, इसी तरह की एक-लाइनर:du folder | sort -n | cut -f 2 | while IFS= read -r -d '' path; do du -sh -- "$path"; done
steabert

बस अपने 1 लाइनर को लाइव सिस्टम पर आज़माया। प्रवेश निषेध त्रुटि और कोई डु परिणाम प्राप्त करें। क्या आपने इस कमांड को पहले उबंटू सिस्टम पर आजमाया था? मैंने फोल्डर को / होम / यूजरनेम
कैट एम्स्टर्डम

ओह, क्षमा करें, आपको ड्रॉप करना चाहिए -d '', यह फ़ाइल कमांड के आउटपुट पर उपयोग करने से एक बाएं-ओवर है।
स्टीबर्ट

यह गैर-लिनक्स सिस्टम पर बहुत अच्छा काम करता है जो GNU का समर्थन नहीं करता है sort
स्टेफन लासवर्स्की

2

कमांड GNU sortमें निम्न विकल्प हैं:

-h, --human-numeric-sort मानव पठनीय संख्याओं की तुलना करें (जैसे, 2K 1G)।

बीएसडी / ओएसएक्स पर इस विकल्प को रखने के लिए, आप (आरई ) sortसे इंस्टॉल कर सकते हैं और बिन फ़ोल्डर को अपनी आरसी फाइलों में जोड़ सकते हैं।coreutilsbrewPATH

तो कमांड ऐसा लगेगा:

du -ah . | sort -rh | head -20

0

उबंटू के हालिया संस्करणों के लिए, उपयोग करें du -h directory | sort -h

मैं आउट-ऑफ-कंट्रोल फ़ाइलों को खोजने के लिए हर समय इसका एक रूप उपयोग करता हूं।


उत्तर की डुप्लीकेट 17 नवंबर को 17:13 अल्लु 2
एल्डर गीक

0

के साथ अपने टर्मिनल खोलें Ctrl+ Alt+ tऔर प्रकार:

  du -sk * | sort -rn 

: DI का उपयोग अब Ctrl + Alt + t को ऊपर प्रारूप में बदलने के लिए किया जाता है ताकि मैंने अपने Xpad के लिए आवश्यक प्रारूप को चिपकाया हो। : डी इस तरह के एक काम के लिए बधाई दी जा रही महान लगता है :)
तारीख

आपके द्वारा यहां किया गया हर काम पूरक के लायक है।
r --dʒɑ

0

यह एक व्हाट्सएप या एपोस्ट्रोफ के साथ फाइलनेम को संभालता है, और सिस्टम पर काम करता है जो समर्थन नहीं करता है xargs -dया sort -h:

du -s * | sort -n | cut -f2 | tr '\n' '\0' | xargs -0 -I {} du -sh "{}"

जिसके परिणामस्वरूप:

368K    diskmanagementd
392K    racoon
468K    coreaudiod
472K    securityd
660K    sshd
3.6M    php-fpm

के \nसाथ बदलने की बात क्या है \0? क्या इसके लिए बहुत देर नहीं हुई है?
मूरू

यह इनपुट के लिए तैयार करता है xargs -0, जो इनपुट के NUL सीमांकित होने की उम्मीद करता है (जैसा कि खोज -प्रिंट0 का उत्पादन होगा)। अन्यथा आप -0 का उपयोग नहीं कर सकते हैं, और एपोस्ट्रोफ का विशेष अर्थ है।
मार्क क्रॉसफील्ड

मुझे पता है -0, लेकिन यह अप्रासंगिक है: imgur.com/87w3vfj
muru

मुझे लगता है कि काम कर रहा है क्योंकि आपने एक बैकटोक का इस्तेमाल किया है, न कि एपोस्ट्रोफ का। gist.github.com/mrmanc/8aef830945ce03aa65f0
मार्क

0

जो मुझे सभी प्रणालियों पर काम करते हुए मिला, वह संस्करण की परवाह किए बिना ( sort -hमेरे लिए काम नहीं करता) है

du -h $(du * | sort -n | awk '{print $2}')

awk '{print $2}'मूल रूप से फ़ाइल नाम प्रिंट करता है।

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