Что такое способ командной строки для поиска больших файлов / каталогов для удаления и освобождения пространства?

cat /etc/apt/sources.list 

изменить с помощью

sudo gedit /etc/apt/sources.list

удалить http://packages.medibuntu.org/

, затем запустить

sudo apt-get update
1
задан 29 January 2013 в 18:21

10 ответов

Я использую только комбинацию 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, чтобы держать вещи в одной файловой системе (У меня довольно сложное расположение кросс-монтируемых вещей между SSD и RAID5).

Примечание 2: 2>/dev/null перенаправляет любые сообщения об ошибках в забвение. Если они вас не беспокоят, это не обязательно.

28
ответ дан 25 May 2018 в 22:00
  • 1
    Когда я запускаю эту команду, происходит спуск в дочерние каталоги. На странице man du: «Обобщите использование диска каждым FILE, рекурсивно для каталогов». – Jamie 27 April 2016 в 19:14

Мое избранное решение использует смесь из нескольких хороших ответов.

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

du аргументы:

-a для «всех» файлов и каталогов. Оставьте это для просто каталогов -BM, чтобы вывести размеры в мегабайтах (M) размерах блоков (B) 2>/dev/null - исключить сообщения об ошибках «отказались» (спасибо @Oli)

sort аргументы :

-a для всех файлов и каталогов. Оставьте это для только каталогов -r для «обратного» (наибольшего к наименьшему) аргументов

head:

-r для «обратного «(самый большой и наименьший) -BM для вывода размеров в мегабайтах (M) блоков (B)

Примечание: префикс с 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
14
ответ дан 25 May 2018 в 22:00

Ответ qbi верен, но он будет очень медленным, когда будет много файлов, так как он начнет новый ls-процесс для каждого элемента.

гораздо более быстрая версия, использующая поиск без появления дочерних процессов, использовать printf для печати размера в байтах (% s) и пути (% p)

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

8
ответ дан 25 May 2018 в 22:00

Чтобы отобразить самые большие 20 каталогов (рекурсивно) в текущей папке, используйте следующий однострочный:

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

или (более ориентированный на Unix):

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 доступен только для GNU sort, поэтому для правильной работы с OSX / BSD вы должны установить его из 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'
6
ответ дан 25 May 2018 в 22:00

Это кажется идеальным приложением для 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
ответ дан 25 May 2018 в 22:00

Когда мне нужно больше свободного места на серверах, я использую эту команду. Он найдет все файлы размером более 50 МБ, а «du -h» составит лучший список файлов и «sort -n» после того, как список make make numericcaly отсортирован по размеру файла.

find / -size +50M -type f -exec du -h {} \; | sort -n
2
ответ дан 25 May 2018 в 22:00

Попробуйте Baobab, он дает вам графический обзор файлов и папок, вы можете видеть, где находятся настоящие космические свиньи, и удалять их одним щелчком мыши https://help.ubuntu.com/community/Baobab

1
ответ дан 25 May 2018 в 22:00
  • 1
    В этом конкретном вопросе OP предпочитает метод командной строки. См. Комментарии к вопросу. Я также отредактирую этот вопрос. – user 29 January 2013 в 18:10
  • 2
    В этом конкретном вопросе OP предпочитает метод командной строки. См. Комментарии к вопросу. Я также отредактирую этот вопрос. – user 29 January 2013 в 18:10
  • 3
    В этом конкретном вопросе OP предпочитает метод командной строки. См. Комментарии к вопросу. Я также отредактирую этот вопрос. – user 29 January 2013 в 18:10
  • 4
    В этом конкретном вопросе OP предпочитает метод командной строки. См. Комментарии к вопросу. Я также отредактирую этот вопрос. – user 29 January 2013 в 18:10
  • 5
    В этом конкретном вопросе OP предпочитает метод командной строки. См. Комментарии к вопросу. Я также отредактирую этот вопрос. – user 29 January 2013 в 18:10
  • 6
    В этом конкретном вопросе OP предпочитает метод командной строки. См. Комментарии к вопросу. Я также отредактирую этот вопрос. – user 29 January 2013 в 18:10

Чтобы найти все файлы GB, например, я бы использовал du и grep, хотя другие методы, упомянутые здесь, также выглядят великолепно.

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

Вы также можете получить представление о параметре --except, который имеет.

1
ответ дан 25 May 2018 в 22:00

blanktest - Пустая папка

test - папка для удаления

rsync -a --delete blanktest/ test/
0
ответ дан 25 May 2018 в 22:00
  • 1
    rsync - инструмент для синхронизации содержимого папок на разных хостах. Вы уверены, что это может быть применено для целей ОП? Пожалуйста, отредактируйте свой ответ, чтобы уточнить. – hmayag 22 May 2014 в 16:42

Вы также можете сортировать файлы по размеру:

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

Он находит только файлы и выполняет du -h для каждого файла, который показывает размер файла. Наконец, мы сортируем вывод find / du в соответствии с первым столбцом (в читаемом для человека формате).

Последний напечатанный файл является самым большим.

0
ответ дан 25 May 2018 в 22:00

Другие вопросы по тегам:

Похожие вопросы: