We’re just starting a UNIX class and are learning a variety of Bash commands. Our assignment involves performing various commands on a directory that has a number of folders under it as well.
I know how to list and count all the regular files from the root folder using:
find . -type l | wc -l
But I’d like to know where to go from there in order to find the largest file in the whole directory. I’ve seen somethings regarding a du
command, but we haven’t learned that, so in the repertoire of things we’ve learned I assume we need to somehow connect it to the ls -t
command.
And pardon me if my ‘lingo’ isn’t correct, I’m still getting used to it!
jww
96.4k90 gold badges407 silver badges876 bronze badges
asked Sep 20, 2012 at 23:15
2
Quote from this link-
If you want to find and print the top 10 largest files names (not
directories) in a particular directory and its sub directories
$ find . -type f -printf '%s %pn'|sort -nr|head
To restrict the search to the present directory use “-maxdepth 1” with
find.
$ find . -maxdepth 1 -printf '%s %pn'|sort -nr|head
And to print the top 10 largest “files and directories”:
$ du -a . | sort -nr | head
** Use “head -n X” instead of the only “head” above to print the top X largest files (in all the above examples)
user2297550
3,0922 gold badges27 silver badges39 bronze badges
answered Sep 20, 2012 at 23:21
tamslertamsler
1,2651 gold badge18 silver badges26 bronze badges
10
To find the top 25 files in the current directory and its subdirectories:
find . -type f -exec ls -al {} ; | sort -nr -k5 | head -n 25
This will output the top 25 files by sorting based on the size of the files via the “sort -nr -k5” piped command.
Same but with human-readable file sizes:
find . -type f -exec ls -alh {} ; | sort -hr -k5 | head -n 25
murla
952 silver badges10 bronze badges
answered May 29, 2014 at 3:42
xprosxpros
2,10618 silver badges15 bronze badges
0
find . -type f | xargs ls -lS | head -n 1
outputs
-rw-r--r-- 1 nneonneo staff 9274991 Apr 11 02:29 ./devel/misc/test.out
If you just want the filename:
find . -type f | xargs ls -1S | head -n 1
This avoids using awk
and allows you to use whatever flags you want in ls
.
Caveat. Because xargs
tries to avoid building overlong command lines, this might fail if you run it on a directory with a lot of files because ls
ends up executing more than once. It’s not an insurmountable problem (you can collect the head -n 1
output from each ls
invocation, and run ls -S
again, looping until you have a single file), but it does mar this approach somewhat.
answered Sep 21, 2012 at 3:45
nneonneonneonneo
170k35 gold badges305 silver badges377 bronze badges
3
There is no simple command available to find out the largest files/directories on a Linux/UNIX/BSD filesystem. However, combination of following three commands (using pipes) you can easily find out list of largest files:
# du -a /var | sort -n -r | head -n 10
If you want more human readable output try:
$ cd /path/to/some/var
$ du -hsx * | sort -rh | head -10
Where,
- Var is the directory you wan to search
- du command -h option : display sizes in human readable format (e.g.,
1K, 234M, 2G). - du command -s option : show only a total for each
argument (summary). - du command -x option : skip directories on
different file systems. - sort command -r option : reverse the result
of comparisons. - sort command -h option : compare human readable
numbers. This is GNU sort specific option only. - head command -10 OR -n 10 option : show the first 10 lines.
answered May 26, 2014 at 9:34
KalpanaKalpana
4911 gold badge7 silver badges21 bronze badges
2
This lists files recursively if they’re normal files, sorts by the 7th field (which is size in my find
output; check yours), and shows just the first file.
find . -type f -ls | sort +7 | head -1
The first option to find
is the start path for the recursive search. A -type of f
searches for normal files. Note that if you try to parse this as a filename, you may fail if the filename contains spaces, newlines or other special characters. The options to sort
also vary by operating system. I’m using FreeBSD.
A “better” but more complex and heavier solution would be to have find
traverse the directories, but perhaps use stat
to get the details about the file, then perhaps use awk
to find the largest size. Note that the output of stat
also depends on your operating system.
answered Sep 20, 2012 at 23:20
ghotighoti
45k8 gold badges65 silver badges104 bronze badges
7
This will find the largest file or folder in your present working directory:
ls -S /path/to/folder | head -1
To find the largest file in all sub-directories:
find /path/to/folder -type f -exec ls -s {} ; | sort -nr | awk 'NR==1 { $1=""; sub(/^ /, ""); print }'
answered Sep 20, 2012 at 23:21
SteveSteve
49.8k13 gold badges89 silver badges101 bronze badges
2
On Solaris I use:
find . -type f -ls|sort -nr -k7|awk 'NR==1{print $7,$11}' #formatted
or
find . -type f -ls | sort -nrk7 | head -1 #unformatted
because anything else posted here didn’t work.
This will find the largest file in $PWD
and subdirectories.
answered Oct 13, 2013 at 22:33
rindealrindeal
98311 silver badges16 bronze badges
0
Try the following one-liner (display top-20 biggest files):
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
or (human readable sizes):
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
Works fine under Linux/BSD/OSX in comparison to other answers, as find’s
-printf
option doesn’t exist on OSX/BSD andstat
has different parameters depending on OS. However the second command to work on OSX/BSD properly (assort
doesn’t have-h
), installsort
fromcoreutils
or remove-h
fromls
and usesort -nr
instead.
So these aliases are useful to have in your rc files:
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
answered Mar 5, 2015 at 12:34
kenorbkenorb
153k85 gold badges674 silver badges737 bronze badges
2
Try following command :
find /your/path -printf "%k %pn" | sort -g -k 1,1 | awk '{if($1 > 500000) print $1/1024 "MB" " " $2 }' |tail -n 1
This will print the largest file name and size and more than 500M. You can move the if($1 > 500000)
,and it will print the largest file in the directory.
Jad Chahine
6,6998 gold badges37 silver badges59 bronze badges
answered Sep 21, 2012 at 3:23
zjhuizjhui
7691 gold badge8 silver badges21 bronze badges
du -aS /PATH/TO/folder | sort -rn | head -2 | tail -1
or
du -aS /PATH/TO/folder | sort -rn | awk 'NR==2'
answered Sep 20, 2012 at 23:33
Ansgar WiechersAnsgar Wiechers
191k23 gold badges245 silver badges320 bronze badges
To list the larger file in a folder
ls -sh /pathFolder | sort -rh | head -n 1
The output of ls -sh
is a sized s
and human h
understandable view of the file size number.
You could use ls -shS /pathFolder | head -n 1
. The bigger S
from ls
already order the list from the larger files to the smaller ones but the first result its the sum of all files in that folder. So if you want just to list the bigger file, one file, you need to head -n 2
and check at the “second line result” or use the first example with ls sort head
.
answered Mar 8, 2018 at 1:14
This command works for me,
find /path/to/dir -type f -exec du -h '{}' + | sort -hr | head -10
Lists Top 10 files ordered by size in human-readable mode.
answered Jul 26, 2021 at 19:07
This script simplifies finding largest files for further action.
I keep it in my ~/bin directory, and put ~/bin in my $PATH.
#!/usr/bin/env bash
# scriptname: above
# author: Jonathan D. Lettvin, 201401220235
# This finds files of size >= $1 (format ${count}[K|M|G|T], default 10G)
# using a reliable version-independent bash hash to relax find's -size syntax.
# Specifying size using 'T' for Terabytes is supported.
# Output size has units (K|M|G|T) in the left hand output column.
# Example:
# ubuntu12.04$ above 1T
# 128T /proc/core
# http://stackoverflow.com/questions/1494178/how-to-define-hash-tables-in-bash
# Inspiration for hasch: thanks Adam Katz, Oct 18 2012 00:39
function hasch() { local hasch=`echo "$1" | cksum`; echo "${hasch//[!0-9]}"; }
function usage() { echo "Usage: $0 [{count}{k|K|m|M|g|G|t|T}"; exit 1; }
function arg1() {
# Translate single arg (if present) into format usable by find.
count=10; units=G; # Default find -size argument to 10G.
size=${count}${units}
if [ -n "$1" ]; then
for P in TT tT GG gG MM mM Kk kk; do xlat[`hasch ${P:0:1}`]="${P:1:1}"; done
units=${xlat[`hasch ${1:(-1)}`]}; count=${1:0:(-1)}
test -n "$units" || usage
test -x $(echo "$count" | sed s/[0-9]//g) || usage
if [ "$units" == "T" ]; then units="G"; let count=$count*1024; fi
size=${count}${units}
fi
}
function main() {
sudo
find / -type f -size +$size -exec ls -lh {} ; 2>/dev/null |
awk '{ N=$5; fn=$9; for(i=10;i<=NF;i++){fn=fn" "$i};print N " " fn }'
}
arg1 $1
main $size
answered Jan 22, 2014 at 7:41
jlettvinjlettvin
1,1017 silver badges13 bronze badges
That is quite simpler way to do it:
ls -l | tr -s " " " " | cut -d " " -f 5,9 | sort -n -r | head -n 1***
And you’ll get this: 8445 examples.desktop
answered Mar 14, 2014 at 7:40
Andrii KovalchukAndrii Kovalchuk
4,2132 gold badges35 silver badges31 bronze badges
1
Linux Solution: For example, you want to see all files/folder list of your home (/) directory according to file/folder size (Descending order).
sudo du -xm / | sort -rn | more
answered Mar 3, 2017 at 21:05
MonirMonir
1,36213 silver badges16 bronze badges
ls -alR|awk '{ if ($5 > max) {max=$5;ff=$9}} END {print max "t" ff;}'
answered Jan 11, 2019 at 16:34
Kindly run below one liner with your required-path. as of now i am running for /var/log/
location
(sudo du -a /var/log/ |sort -nr|head -n20 |awk '{print $NF}'|while read l ;do du -csh $l|grep -vi total;done ) 2> /dev/null
answered Oct 27, 2022 at 15:31
linux.cnflinux.cnf
4936 silver badges7 bronze badges
Если на вашем жёстком диске закончилось свободное пространство, самый простой способ его освободить – найти и удалить самые большие и при этом ненужные файлы. Такая задача может возникнуть как на сервере, так и на домашнем компьютере, поэтому существуют удобные решения для обоих ситуаций. Способов поиска больших файлов существует очень много.
Как вы уже поняли, в этой небольшой инструкции мы рассмотрим, как найти большие файлы Linux с помощью графического интерфейса или консольных утилит. Будем двигаться от самого простого к более сложному.
1. GDMap
Несмотря на то, что графических утилит есть около десятка, все они мне не очень нравятся. Например в Gnome можно использовать GDMap, а в KDE – fileslight. Обе утилиты сканируют файловую систему и выводят все файлы в виде диаграммы. Размер блока зависит от размера файла. Чем больше файл или папка, тем больше блок. Для установки GDMap в Ubuntu выполните:
sudo apt install gdmap
Затем запустите утилиту из главного меню. По умолчанию она отображает домашнюю папку. Здесь можно оценить, какие файлы самые увесистые.
2. Утилита ncdu
Это псевдографическая утилита, которая работает в терминале Linux. Она отображает список файлов и директорий по объёму и, что самое интересное, тут же позволяет удалять ненужные файлы. Для установки утилиты выполните:
sudo apt install ncdu
Затем запустите утилиту, передав ей в качестве параметра папку, которую надо просканировать. Можно проверить ту же домашнюю папку:
ncdu /home
У утилиты очень простое управление. Для перемещения по списку используйте кнопки со стрелками вверх и вниз, для открытия папки – клавишу Enter, а для удаления файла – кнопку d. Также можно использовать для перемещения кнопки в Vim стиле – h, j, k, l.
3. Утилита du
Если у вас нет возможности устанавливать новые утилиты, может помочь установленная по умолчанию во всех дистрибутивах утилита du. С помощью следующей команды вы можете вывести 20 самых больших файлов и папок в нужной папке, для примера снова возьмём домашнюю папку:
sudo du -a /home/ | sort -n -r | head -n 20
Мы не можем использовать опцию -h для вывода размера в читабельном формате, потому что тогда не будет работать сортировка.
4. Утилита find
С помощью команды find вы тоже можете искать большие файлы Linux. Для этого используйте опцию -size. Например, давайте найдём файлы, которые больше 500 мегабайтов в той же домашней папке:
sudo find /home -xdev -type f -size +500M
Можно пойти ещё дальше – вывести размер этих файлов и отсортировать их по размеру:
find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh
Самые большие файлы Linux будут сверху, а более мелкие – ниже.
Выводы
В этой небольшой статье мы разобрались, как выполняется поиск больших файлов Linux. После того, как вы их нашли, остаётся выбрать ненужные и удалить, если подобное происходит на сервере, то, обычно, это логи различных сервисов или кэш. Обратите внимание, что после удаления файлов место в файловой системе может и не освободится. Для полного освобождения места следует перезагрузить компьютер. Это довольно частая проблема на серверах и VPS.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
Дисковое пространство не вечно. Рано или поздно приходит момент, когда его катастрофически не хватает. Эффективный способ это исправить — найти файлы и директории, которые занимают больше всего места.
Рассмотрим, как это сделать в Linux с использованием команд find и du.
Поиск больших файлов командой find
Простой поиск
Команда find имеет опцию -size, которая позволяет указать размер файлов для поиска.
Найдем файлы, которые занимают больше 1Gb:
find . -mount -type f -size +1G 2>/dev/null
- Символ точка . после самой команды find, означает, что поиск нужно вести в текущей директории. Вместо точки вы можете указать, например, корневой раздел / или путь до любой другой директории.
- -mount означает, что в процессе поиска не нужно переходить на другие файловые системы.
- -type f означает, что мы ищем файлы.
- -size +1G означает, что нужно найти файлы, размер которых превышает 1Gb. Размер можно указать в различных форматах:
- b — блоки размером 512 байт. Числом указывается количество блоков.
- c — в байтах. Например: -size +128с
- w — в двухбайтовых словах
- k — в килобайтах
- M — в мегабайтах
- G — в гигабайтах
- 2>/dev/null используется, чтобы не показывать ошибки (например, если нет доступа к файлу).
В результате выполнения команды будет выведен список файлов без какой-либо дополнительной информации.
Вывод подробной информации
Добавим в вывод информацию о каждом файле и отсортируем список по размеру. Выполняем команду
find . -mount -type f -size +512M -print 2>/dev/null | xargs -r -d 'n' ls -lh | sort -k5,5 -h -r
Данная команда состоит из трех частей:
- Команда find ищет файлы, которые имеют размер больше 512 мегабайт.
- Результирующий список файлов передается команде xargs, которая, в свою очередь, запускает команду ls -lh над этим списком файлов. В результате получается таблица с файлами и информацией о файлах.
Опция -r, команды xarg, используется для того, чтобы не запускать команду ls, если команда find вернула пустой результат (не нашла файлов). Вместо -r можно использовать длинную запись — опцию –no-run-if-empty
Опция -d ’n’ используется, чтобы разделять список файлов только по символу новой строки (по n). А у нас так и есть — каждый файл на новой строке. Иначе неправильно будут обработаны файлы, в названии которых содержится пробел, так как по умолчанию команда xarg в качестве разделителя использует одновременно пробел, табуляцию или символ новой строки.Примечание: Для BSD-систем вместо -d ’n’ нужно использовать опцию −0, а у команды find вместо -print использовать -print0. Пример: find . -mount -type f -size +512M -print0 2>/dev/null | xargs -0 ls -lh | sort -k5,5 -h -r
- Затем результат команды ls передается команде sort, которая выполняет сортировку списка (таблицы) по пятой колонке — 5-я колонка содержит размеры файлов.
Ключ -h означает, что результат нужно вывести в удобно-читаемом виде (human-readable).
Ключ -r означает, что сортировку нужно выполнять по убыванию (reverse).
Поиск больших файлов и директорий командой du
Команда du используется для вывода размеров файлов и директорий в Linux. Ее можно использовать для поиска больших файлов и директорий. Для этого выполняется команда du и результат сортируется по размеру. Таким образом можно увидеть, кто занимает больше всего места на диске.
Найдем пять самых больших файлов и директорий:
du -ahx . | sort -rh | head -5
- Символ . указывает путь и означает текущую директорию. Для поиска в другой директории укажите вместо точки ее путь.
- Опции -ahx означают:
a — искать и файлы и директории;
h — выводить информацию в удобно-читаемом формате;
x — не выполнять поиск на других файловых системах. - sort -rh выполняет сортировку результата.
- head −5 выводит только пять первых результатов.
Лайков: +5
Войдите, чтобы ставить лайкимне нравится
Материалы по теме:
- Основы работы в командной строке Linux
- Команда find: широкие возможности для поиска файлов в Linux
- Несколько полезных команд Linux
- Сравнение файлов в Linux (команда diff)
- Утилита tree — просмотр дерева директорий в командной строке
- Disk Usage Analyzer (Baobab) — анализатор использования дисков
Смотрите также
- Как распаковать tar bz2 xz gz архивы в Linux
- Структура каталогов (папок) файловой системы Linux
- Символические и жесткие ссылки в Linux. Команда ln
- Как определить раздел, на который установлен Linux (определить корневой раздел)
- Права доступа к файлам в Linux
- Размеры папок и дисков в Linux. Команды df и du
- Firefox 13, что нового
- tail
- Запуск Ubuntu без установки на компьютер (LiveCD)
- Создаем таблицу разделов и форматируем жесткий диск в Ubuntu
Приветствую!
В данном материале будет подробно рассмотрено, как без какого-либо стороннего программного обеспечения осуществлять поиск больших файлов в операционной системе семейства Windows.
Инструкция универсальна, она подойдёт как для Windows Vista, так и всех последующих версий, включая последнюю на сегодняшний день – Windows 10.
Инструкция по поиску файлов большого размера в Виндовс
Довольно часто жёсткий диск (или SSD) чем-то занят и нужно найти и узнать, что это за файлы, которые «отъедают» львиную долю. Можно, конечно, установить приложение, которое покажет, какие именно «объёмные» файлы занимают место, а можно воспользоваться встроенным в систему поиском, что существенно быстрее.
Давайте посмотрим, как осуществить необходимый нам поиск файлов в Windows.
- Для этого нам необходимо открыть окно файлового менеджера (проводник Windows). Это можно сделать самыми различными способами. Мы воспользуемся ярлыком, что расположен на панели задач.
- В окне проводника необходимо перейти в диск или папку, в которой необходимо осуществить поиск файлов большого размера. В нашем примере это будет корень диска «D». Поиск будет произведён как по файлам в корне диска, так и всех имеющихся подпапках.
Открыв интересующее расположение, необходимо кликнуть по строке поиска, что расположена в правом верхнему углу окна.
В этот момент, к примеру, в Windows 7 будет отображено выпадающее меню, где можно задать размер искомых файлов.
А в Windows 10 чуть левее отобразится меню «Средства поиска», где присутствует аналогичный функционал.
- Однако мы воспользуемся универсальной командой, которая работает во всех версиях Windows.
- Введя команду в поисковую строку:
будет произведён поиск и отображение файлов, что имеют размер более 700 мегабайт.
- Если же необходимо задать диапазон, то вот пример соответствующей команды:
в этом случае будет произведён поиск файлов в диапазоне от 700 мегабайт, до 3 гигабайт.
Руководствуясь приведёнными примерами, вы можете указать желаемые размеры поиска файлов конкретно в вашем случае.
- Введя команду в поисковую строку:
- По окончании поиска все найденные файлы будут отображены, и вы сможете осуществить дальнейшие запланированные манипуляции.
Видеоинструкция
Как мы видим, искать файлы большого объёма в Windows достаточно просто. Встроенный в Виндовс поиск по файлам и папкам и ввод простых команд этому весьма и весьма способствует.
Пожертвование сайту IT-Actual.ru (cбор пожертвований осуществляется через сервис «ЮMoney»)
На что пойдут пожертвования реквизиты других платёжных систем
Привет.
Не секрет, что в экономике ныне дела обстоят не лучшим образом, цены растут, а доходы падают. И данный сайт также переживает нелёгкие времена 🙁
Если у тебя есть возможность и желание помочь развитию ресурса, то ты можешь перевести любую сумму (даже самую минимальную) через форму пожертвований, или на следующие реквизиты:
Номер банковской карты: 5331 5721 0220 5546
Кошелёк ЮMoney: 410015361853797
Кошелёк WebMoney: Z812646225287
PayPal: paypal@it-actual.ru
BitCoin: 1DZUZnSdcN6F4YKhf4BcArfQK8vQaRiA93
Оказавшие помощь:
Сергей И. – 500руб
<аноним> – 468руб
<аноним> – 294руб
Мария М. – 300руб
Валерий С. – 420руб
<аноним> – 600руб
Полина В. – 240руб
Деньги пойдут на оплату хостинга, продление домена, администрирование и развитие ресурса. Спасибо.
С уважением, создатель сайта IT-Actual.ru
Со временем, в процессе работы, различные файлы могут занимать огромное количество пространства в памяти компьютера. Вы можете удалить все программы и очевидные файлы, которые занимают много пространства, но памяти может не прибавиться.
Файлы, которые находятся в недрах нашего жесткого диска, могут быть скрыты так далеко, что далеко не каждый сможет найти эти файлы вручную.
Вступайте в наш чат. В нем мы помогаем друг другу и обсуждаем новости из IT сферы.
Больше всего вреда для свободного пространства приносят большие файлы, которые весят от 1 ГБ. Часто, эти файлы даже не нужны в процессе работы, это могут быть просто установщики или старые видео.
Давайте попробуем найти на нашем компьютере эти файлы, причем средствами Windows, без сторонних программ.
Ищем большие файлы
Зайдите в “проводник”, выберите директорию, где нужно найти файлы. К примеру: Мой компьютер, Диск C, Диск D. Жмете на строку поиска справа, и вводите следующую команду:
- размер:гигантский – чтобы найти все файлы, размером более 1 ГБ
- размер:большой – чтобы найти файлы, которые весят более 100 МБ
Жмем Enter и ждем результатов поиска.
Кроме этого, можно поставить свою цифру мегабайт для поиска:
размер:>500МБ – число мегабайт можно менять на свое.
Таким образом, ни один файл от вас не скроется. Также можно вручную проанализировать занятое пространство.
Анализируем занятое пространство
Заходим в параметры -> система -> память. И жмем “показать больше категорий”.
Здесь мы можем наглядно увидеть, сколько памяти занимают файлы, по категориям. Функционал не такой большой, как в сторонних программах, но можно настроить автоочистку памяти.