आदेशों की एक श्रृंखला की तलाश है जो मुझे एक ड्राइव पर सबसे बड़ी फाइलें दिखाएगी।
आदेशों की एक श्रृंखला की तलाश है जो मुझे एक ड्राइव पर सबसे बड़ी फाइलें दिखाएगी।
जवाबों:
यदि आपको केवल बड़ी फ़ाइलों को खोजने की आवश्यकता है, तो आप विकल्प के 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 के "संबंधित पैकेज" अनुभाग पर , मैंने पाया ncdu
। इसके पैकेज विवरण से:
Ncdu एक ncurses- आधारित डु दर्शक है। यह प्रसिद्ध डु यूटिलिटी के माध्यम से एक तेज और आसान करने के लिए उपयोग इंटरफ़ेस प्रदान करता है। यह निर्देशिकाओं के माध्यम से ब्राउज़ करने और ncurses लाइब्रेरी के साथ डिस्क उपयोग के प्रतिशत दिखाने की अनुमति देता है।
-ls
हार्डकोड किया गया है (सूची कोड pred_fls
और list_file फ़ंक्शन के लिए स्रोत कोड देखें )। आप -printf
विकल्प का उपयोग करके आउटपुट को अनुमानित करने की कोशिश कर सकते हैं , आउटपुट को awk के साथ पोस्ट-प्रोसेस कर सकते हैं या कुछ का उपयोग कर सकते हैंfind ... -type f -exec ls -ldh {} \; | column -t
मैं सिर्फ 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
किसी भी त्रुटि संदेश को गुमनामी में पुनर्निर्देशित करता है। यदि वे आपको परेशान नहीं करते हैं, तो यह अनिवार्य नहीं है।
du
आदमी पेज: "प्रत्येक फ़ाइल के डिस्क उपयोग संक्षिप्त, रिकर्सिवली निर्देशिका के लिए।"
मेरा पसंदीदा समाधान इनमें से कई अच्छे जवाबों के मिश्रण का उपयोग करता है।
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
क्यूबी का जवाब सही है लेकिन यह बहुत धीमी होगी जब बहुत सारी फाइलें होंगी क्योंकि यह प्रत्येक आइटम के लिए एक नई एलएस प्रक्रिया शुरू करेगी।
बहुत तेज़ संस्करण जो स्पैनिंग चाइल्ड प्रक्रियाओं के बिना खोज का उपयोग करते हैं, वे बाइट्स (% s) और पथ (% p) में आकार प्रिंट करने के लिए प्रिंटफ़ का उपयोग करेंगे।
find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries
वर्तमान फ़ोल्डर में सबसे बड़ी शीर्ष -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'
ऐसा लगता है 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
) से संबंधित हैं ।
जब मुझे सर्वर पर अधिक खाली जगह बनाने की आवश्यकता होती है तो मैं इस कमांड का उपयोग करता हूं। यह सभी फ़ाइलों को बड़ा लगता है, फिर 50 एमबी और "डु-एच" फाइलों की बेहतर सूची बनाता है और "सॉर्ट-एन" के बाद पाइप को सूची के आकार के अनुसार फ़ाइल आकार द्वारा क्रमबद्ध किया जाता है।
find / -size +50M -type f -exec du -h {} \; | sort -n
Baobab का प्रयास करें, यह आपको फ़ाइलों और फ़ोल्डरों का एक ग्राफिकल अवलोकन देता है, आप देख सकते हैं कि वास्तविक स्थान हॉग कहां हैं और उन्हें एक क्लिक के साथ हटाएं https://help.ubuntu.com/community/Baobab
आप फ़ाइलों को आकार से भी सॉर्ट कर सकते हैं:
find . -type f -exec du -h {} \; | sort -k1 -h
यह du -h
हर फाइल के लिए केवल फाइल्स और एग्जीक्यूट को ढूंढता है , जो फाइल के साइज को दिखाता है। अंत में, हम पहले कॉलम (मानव पठनीय प्रारूप में) के अनुसार find
/ के आउटपुट को सॉर्ट करते हैं du
।
अंतिम मुद्रित फ़ाइल सबसे बड़ी है।
निर्देशिकाओं को छोड़ते समय सबसे बड़ी फ़ाइलों को देखने के लिए आप कमांड का उपयोग कर सकते हैं:
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 का उपयोग कर सकते हैं जैसा कि उदाहरण के लिए यहां दिखाया गया है ।
एक महान, उपयोगकर्ता के अनुकूल एक के जवाब में संदर्भित उपकरण समान प्रश्न है NCurses Disk Usage
उपकरण:
sudo ncdu /