सवाल अंतरिक्ष को हटाने और मुक्त करने के लिए बड़ी फ़ाइलों / निर्देशिकाओं को खोजने के लिए कमांड लाइन तरीका क्या है?


आदेशों की एक श्रृंखला की तलाश है जो मुझे ड्राइव पर सबसे बड़ी फाइलें दिखाएगी।


158
2018-04-20 14:01


मूल


क्या कुछ ग्राफिकल ठीक होगा? - RolandiXor♦
नहीं, एसएसएच पर कमांड लाइन पर चल रहा है। - Ryan Detzel
क्या अजीब बात है कि मेरे पास दो सर्वर हैं जो एक ही चीज़ चला रहे हैं। एक 50% डिस्क उपयोग पर है और दूसरा 99% है। मुझे यह नहीं मिल रहा है कि इसका क्या कारण है। - Ryan Detzel
तो मैं उलझन में हूं, यह कहता है कि 98% डु के साथ प्रयोग किया जाता है लेकिन जब मैं gt5 ऐप चलाता हूं तो मुझे मिलता है: grab.by/9Vv2 - Ryan Detzel


जवाब:


यदि आपको केवल बड़ी फाइलें ढूंढने की ज़रूरत है, तो आप इसका उपयोग कर सकते हैं find उसके साथ -size विकल्प। अगला आदेश 10 एमआईबी से बड़ी सभी फाइलों को सूचीबद्ध करेगा (10 एमबी के साथ भ्रमित नहीं होना चाहिए):

find / -size +10M -ls

यदि आप किसी निश्चित आकार के बीच फ़ाइलों को ढूंढना चाहते हैं, तो आप इसे "आकार से कम" खोज के साथ जोड़ सकते हैं। अगली कमांड 10 एमआईबी और 12 एमआईबी के बीच फाइलें पाती है:

find / -size +10M -size -12M -ls

apt-cache search 'disk usage' डिस्क उपयोग विश्लेषण के लिए उपलब्ध कुछ प्रोग्राम सूचीबद्ध करता है। एक आवेदन जो बहुत ही आशाजनक दिखता है gt5

पैकेज विवरण से:

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

Screenshot of gt5

के "संबंधित संकुल" खंड पर GT5, मुझे मिला ncdu। अपने पैकेज विवरण से:

एनसीडीयू एक ncurses- आधारित du दर्शक है। यह प्रसिद्ध डु उपयोगिता के माध्यम से एक तेज़ और उपयोग में आसान इंटरफ़ेस प्रदान करता है। यह निर्देशिकाओं के माध्यम से ब्राउज़ करने और ncurses लाइब्रेरी के साथ डिस्क उपयोग के प्रतिशत दिखाने की अनुमति देता है।

Screenshot of ncdu


223
2018-04-20 14:16



एनसीडीयू बहुत तेज़ है और बस मुझे जो चाहिए, धन्यवाद! मैंने gt5 भी कोशिश की है, लेकिन अभी इसे रद्द कर दिया क्योंकि यह किसी भी प्रतिक्रिया के बारे में "सोच" बहुत लंबा था - Lukas
पवित्र बकवास, एनसीडीयू अद्भुत है, अपने निष्कर्ष साझा करने के लिए धन्यवाद! - While-E
अगर मैं प्यार करता हूँ ncdu मजबूत बताया गया था। मुझे थोड़ी देर में इसकी ज़रूरत है और मुझे नाम याद नहीं है। - Martin Thoma


मैं बस एक संयोजन का उपयोग करें du तथा sort

sudo du -sx /* 2>/dev/null | sort -n

0   /cdrom
0   /initrd.img
0   /lib64
0   /proc
0   /sys
0   /vmlinuz
4   /lost+found
4   /mnt
4   /nonexistent
4   /selinux
8   /export
36  /media
56  /scratchbox
200 /srv
804 /dev
4884    /root
8052    /bin
8600    /tmp
9136    /sbin
11888   /lib32
23100   /etc
66480   /boot
501072  /web
514516  /lib
984492  /opt
3503984 /var
7956192 /usr
74235656    /home

फिर यह एक मामला है धोये और दोहराएं। उपनिर्देशिका को लक्षित करें जो आपको लगता है कि बहुत बड़ा है, उनके लिए आदेश चलाएं और आपको पता चल जाएगा कि समस्या का कारण क्या है।

नोट: मैं उपयोग करता हूं duकी -x चीजों को एक फाइल सिस्टम तक सीमित रखने के लिए ध्वज (एसएसडी और RAID5 के बीच क्रॉस-माउंटेड चीजों की काफी जटिल व्यवस्था है)।

नोट 2: 2>/dev/null किसी त्रुटि संदेश को विस्मरण में रीडायरेक्ट करता है। अगर वे आपको परेशान नहीं करते हैं, तो यह अनिवार्य नहीं है।


29
2018-04-20 14:30



जब मैं इस कमांड को चलाता हूं तो du बाल निर्देशिका में उतरता है। वहाँ से du मैन पेज: "प्रत्येक फ़ाइल के डिस्क उपयोग को संक्षेप में, निर्देशिकाओं के लिए सारांशित करें।" - Jamie


मेरा पसंदीदा समाधान इन अच्छे उत्तरों में से कई से मिश्रण का उपयोग करता है।

du -aBM 2>/dev/null | sort -nr | head -n 50 | more

du तर्क:

  • -a "सभी" फ़ाइलों और निर्देशिकाओं के लिए। केवल निर्देशिकाओं के लिए इसे छोड़ दें
  • -BM मेगाबाइट (एम) ब्लॉक आकार में आकार को आउटपुट करने के लिए (बी)
  • 2>/dev/null - "अनुमति अस्वीकार" त्रुटि संदेशों को छोड़ दें (धन्यवाद @ ओली)

sort तर्क:

  • -n "संख्यात्मक" के लिए
  • -r "रिवर्स" के लिए (सबसे छोटी से छोटी)

head तर्क:

  • -n 50 शीर्ष 50 परिणामों के लिए।
  • छोड़ दो more यदि एक छोटी संख्या का उपयोग कर रहे हैं

नोट: उपसर्ग के साथ sudo उन निर्देशिकाओं को शामिल करने के लिए जिनके पास आपके खाते तक पहुंचने की अनुमति नहीं है।

उदाहरण / var (ग्रैंड कुल समेत) में शीर्ष 10 सबसे बड़ी फाइलें और निर्देशिका दिखा रहा है।

cd /var
sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M   .
6794M   ./lib
5902M   ./lib/mysql
3987M   ./lib/mysql/my_database_dir
1825M   ./lib/mysql/my_database_dir/a_big_table.ibd
997M    ./lib/mysql/my_database_dir/another_big_table.ibd
657M    ./log
629M    ./log/apache2
587M    ./log/apache2/ssl_access.log
273M    ./cache

16
2017-07-03 23:24



इसे प्यार करो, धन्यवाद - electblake


क्यूबी का जवाब सही है लेकिन बहुत सारी फाइलें होती हैं जब बहुत सारी फाइलें होती हैं क्योंकि यह प्रत्येक आइटम के लिए एक नई एलएस प्रक्रिया शुरू करेगी।

बाल प्रक्रियाओं के बिना खोजने का उपयोग करने वाला एक बहुत तेज संस्करण बाइट्स (% s) और पथ (% p) में आकार मुद्रित करने के लिए printf का उपयोग करना होगा।

find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries


8
2017-11-16 12:55



पुष्टि करें कि यह बहुत तेज़ है - Cookie


वर्तमान फ़ोल्डर में सबसे बड़ी टॉप -20 निर्देशिकाओं (रिकर्सिवली) को प्रदर्शित करने के लिए, निम्न एक-लाइनर का उपयोग करें:

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

या (अधिक यूनिक्स उन्मुख):

du -a . | sort -rn | head -20

वर्तमान निर्देशिका में शीर्ष 20 सबसे बड़ी फ़ाइलों के लिए (पुनरावर्ती):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

या मानव पठनीय आकार के साथ:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

कृपया ध्यान दें कि -h जीएनयू के लिए उपलब्ध है sort केवल, इसलिए इसे ओएसएक्स / बीएसडी पर सही तरीके से काम करने के लिए, आपको इसे इंस्टॉल करना होगा coreutils। फिर अपने फ़ोल्डर को अपने में जोड़ें PATH

तो इन उपनामों में आपके लिए उपयोगी हैं rc फाइलें (हर बार जब आपको इसकी आवश्यकता होती है):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

7
2018-03-05 14:17





यह के लिए सही आवेदन की तरह लगता है find:

find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5

यह आदेश निर्देशिका में सभी फाइलें पायेगा $DIRECTORY और निष्पादित करें ls -s उन पर। अंतिम आदेश फ़ाइल के आवंटित आकार और फ़ाइल नाम मुद्रित करता है। नतीजा संख्यात्मक रूप से क्रमबद्ध किया गया है और अंतिम पांच प्रविष्टियां दिखायी गयी हैं। तो परिणामस्वरूप आप सबसे बड़ी 5 फाइलें देखेंगे $DIRETORY या कोई उपनिर्देशिका। अगर आप प्रवेश करते हैं tail -n 1 आप केवल सबसे बड़ी फाइल देखेंगे।

इसके अलावा आप के साथ बहुत कुछ खेल सकते हैं find। उदाहरण के लिए आप उन फाइलों की तलाश कर सकते हैं जो छोटे हैं n दिन (-ctime -n) या जो विशेष उपयोगकर्ताओं से संबंधित हैं (-user johndoe)।


6
2018-04-20 14:26





जब मुझे सर्वर पर अधिक खाली स्थान की आवश्यकता होती है तो मैं इस कमांड का उपयोग करता हूं। यह सभी फ़ाइलों को 50 एमबी और "डु-एच" फ़ाइलों की बेहतर सूची बनाता है और पाइप के बाद "सॉर्ट-एन" फ़ाइल आकार द्वारा क्रमबद्ध सूची numericcaly बनाते हैं।

find / -size +50M -type f -exec du -h {} \; | sort -n

2
2017-10-11 20:40