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


202

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


क्या कुछ चित्रमय ठीक होगा?
RolandiXor

5
nope, ssh पर कमांड लाइन पर चल रहा है।
रयान डेटेल

क्या अजीब है मेरे पास दो सर्वर हैं जो एक ही चीज चला रहे हैं। एक 50% डिस्क उपयोग पर है और दूसरा 99% पर है। मुझे पता नहीं चल पाया कि यह क्या कारण है।
रयान डेटेल

तो मैं भ्रमित हूँ, यह कहते हैं कि 98% du के साथ उपयोग किया जाता है, लेकिन जब मैं gt5 ऐप चलाता हूं तो मुझे मिलता है: Grab.by/9Vv2
Ryan Detzel

जवाबों:


275

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

find / -size +10M -ls

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

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

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

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

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

Gt5 का स्क्रीनशॉट

Gt5 के "संबंधित पैकेज" अनुभाग पर , मैंने पाया ncdu। इसके पैकेज विवरण से:

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

Ncdu का स्क्रीनशॉट


3
ncdu बहुत जल्दी है और बस मुझे क्या चाहिए, धन्यवाद! मैंने भी gt5 की कोशिश की है, लेकिन इसे रद्द कर दिया है क्योंकि यह "सोच" था बहुत लंबा w / o किसी भी प्रतिक्रिया
लुकास

7
पवित्र बकवास, ncdu अद्भुत है, अपने निष्कर्षों को साझा करने के लिए धन्यवाद!
जबकि-ई।

मुझे अच्छा लगेगा अगर ncdu को मजबूत बताया गया। मुझे एक बार इसकी आवश्यकता है और मुझे नाम याद नहीं है।
मार्टिन थोमा

याद करने के लिए पर्याप्त ncdu :) के लिए धन्यवाद :)
श्री कोडर

1
@mope, आउटपुट के लिए आउटपुट स्वरूप -lsहार्डकोड किया गया है (सूची कोड pred_flsऔर list_file फ़ंक्शन के लिए स्रोत कोड देखें )। आप -printfविकल्प का उपयोग करके आउटपुट को अनुमानित करने की कोशिश कर सकते हैं , आउटपुट को awk के साथ पोस्ट-प्रोसेस कर सकते हैं या कुछ का उपयोग कर सकते हैंfind ... -type f -exec ls -ldh {} \; | column -t
Lekensteyn

33

मैं सिर्फ 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किसी भी त्रुटि संदेश को गुमनामी में पुनर्निर्देशित करता है। यदि वे आपको परेशान नहीं करते हैं, तो यह अनिवार्य नहीं है।


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

26

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

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

du तर्क:

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

sort तर्क:

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

head तर्क:

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

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

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

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

10

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

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

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


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

10

वर्तमान फ़ोल्डर में सबसे बड़ी शीर्ष -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केवल GNU के लिए उपलब्ध है , इसलिए इसे OSX / BSD पर ठीक से काम करने के लिए, आपको इसे इनस्टॉल करना होगा coreutils। फिर उसके फोल्डर को अपने में जोड़ें PATH

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

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

8

ऐसा लगता है 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) से संबंधित हैं ।


5

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

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

1

Baobab का प्रयास करें, यह आपको फ़ाइलों और फ़ोल्डरों का एक ग्राफिकल अवलोकन देता है, आप देख सकते हैं कि वास्तविक स्थान हॉग कहां हैं और उन्हें एक क्लिक के साथ हटाएं https://help.ubuntu.com/community/Baobab


2
इस विशेष प्रश्न में, ओपी एक कमांड लाइन विधि पसंद करता है। प्रश्न के लिए टिप्पणियाँ देखें। मैं प्रश्न को भी संपादित करूँगा।

1

उदाहरण के लिए मैं सभी GB फ़ाइलों को खोजने के लिए du और grep का उपयोग करूँगा, हालाँकि यहाँ बताई गई अन्य विधियाँ बहुत अच्छी लगती हैं।

du -h -a /dir | grep "[0-9]G\b"  

तुम भी - विकल्प है कि du है विकल्प के साथ फैंसी प्राप्त कर सकते हैं।


0

आप फ़ाइलों को आकार से भी सॉर्ट कर सकते हैं:

find . -type f -exec du -h {} \; | sort -k1 -h

यह du -hहर फाइल के लिए केवल फाइल्स और एग्जीक्यूट को ढूंढता है , जो फाइल के साइज को दिखाता है। अंत में, हम पहले कॉलम (मानव पठनीय प्रारूप में) के अनुसार find/ के आउटपुट को सॉर्ट करते हैं du

अंतिम मुद्रित फ़ाइल सबसे बड़ी है।


0

निर्देशिकाओं को छोड़ते समय सबसे बड़ी फ़ाइलों को देखने के लिए आप कमांड का उपयोग कर सकते हैं:

sudo find / -type f -printf “%s\t%p\n” | sort -n | tail -1
find $HOME -type f -printf ‘%s %p\n’ | sort -nr | head -10

उन सभी फ़ाइलों को खोजने के लिए जो 100MiB से बड़ी हैं (यह 100MB नहीं है, यहां देखें कि क्या आप भ्रमित हैं)

find / -size +100M -ls

नीचे दिए गए आदेश फ़ोल्डर में सबसे बड़ी 5 फाइलें प्रदर्शित करेंगे $DIRECTORY:

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

उपयोग du: नीचे दी गई कमांड जो डु का उपयोग करती है, होम वर्किंग फ़ोल्डर में 20 सबसे बड़े आकारों के साथ निर्देशिकाओं को प्रदर्शित करें:

sudo du -a /home | sort -n -r | head -n 20

अब सब-फोल्डर, रन सहित सबसे बड़ी निर्देशिकाओं / फाइलों को प्रदर्शित करने के लिए अब:

du -Sh | sort -rh | head -n 10

का उपयोग कर ls:

/ बिन निर्देशिका में 5 शीर्ष सबसे बड़ी फ़ाइलों को सूचीबद्ध करने के लिए, नीचे दिए गए आदेश जारी करें:

ls -lSh /bin | head -5

आप डिस्क उपयोग विश्लेषक या Baobao का उपयोग कर सकते हैं जैसा कि उदाहरण के लिए यहां दिखाया गया है


0

एक महान, उपयोगकर्ता के अनुकूल एक के जवाब में संदर्भित उपकरण समान प्रश्न है NCurses Disk Usageउपकरण:

sudo ncdu /

खैर, फाइलसिस्टम की जड़ से शुरू करना मेरे लिए बिल्कुल व्यर्थ के विपरीत था। इसने मुझे पूरे फाइल सिस्टम में अंतरिक्ष की बचत के लिए लक्षित करने के लिए सबसे महत्वपूर्ण स्थानों की पहचान करने की अनुमति दी। भले ही, आप किसी भी निर्देशिका में शुरू करने के लिए उल्लेख का उपयोग कर सकते हैं। उस टूल के लिए डॉक्स देखें। लेकिन, जैसा कि अनुरोध किया गया है, यहां स्रोत उत्तर की लिंक है ।
जोंसाइड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.