Поиск самых больших и самых маленьких файлов в директории
Наёдем 5 самых больших по размеру файлов в директории и её поддиректориях. Отметим, что данный процесс может занять некоторое время в зависимости от количества обрабатываемых файлов.
# find . -type f -exec ls -s {} ; | sort -n -r | head -5
Найдём 5 самых маленьких файлов в директории и её поддиректориях. Техника та же самая, единственное отличие в сортировке.
# find . -type f -exec ls -s {} ; | sort -n | head -5
Если в директории и поддиректориях были пустые файлы (zero byte files), то скорее всего они будут в списке 5 самых маленьких файлов. Следующим способом мы найдем 5 самых маленьких файлов, исключая пустые:
# find . -not -empty -type f -exec ls -s {} ; | sort -n | head -5
Также для поиска самых больших и самых маленьких файлов можно использовать команду листинга.
Найдём 10 самых больших файлов в текущей директории. Чтобы найти наибольший файл в каталоге, используйте команду ls с опцией `-S', которая сортирует файлы в нисходящем порядке по размеру (обычно ls выводит список файлов по алфавиту). Добавьте опцию `-l', чтобы вывести размер и другие атрибуты файла.
$ ls -lS
$ ls -lS | less
$ ls -lS | head +10
Найдём 10 cамых маленьких файлов в текущей директории. Чтобы вывести оглавление каталога, начав с файлов наименьшего размера, используйте ls с ключами `-S' и `-r', которые сортируют вывод в обратном порядке.
$ ls -lSr
$ ls -lSr | less
$ ls -lSr | tail -10
Чтобы вывести список каталогов, отсортированных по размеру — то есть размеру всех содержащихся в них файлов — используйте du
и sort
. Команда du
выводит список каталогов в восходящем порядке, начиная с самого маленького; опция -S
помещает при выводе в первую колонку размер каталога в килобайтах. Укажите требуемое дерево каталогов в качестве аргумента du
и перенаправьте вывод в команду sort с ключом -n
, которая отсортирует список по числам.
Показывает 50 самых больших файлов/директорий, отсортированных по размеру:
du -xak .|sort -n|tail -50
Вывести список подкаталогов в текущем дереве каталогов, отсортированный по размеру, введите:
$ du -S . sort -n
Если Вам нужно, чтобы первыми были указаны самые большие каталоги, используйте ключ -r
:
$ du -S . sort -nr
Поиск файлов по типу (не путать с расширениями файлов в Windows)
Используя опцию –type
, найдем только socket файлы.
# find . -type s
А вот так найдем все директории:
# find . -type d
Найдем только обычные файлы (normal)
# find . -type f
Наёдем все скрытые файлы:
# find . -type f -name ".*"
Найдём все скрытые директории:
# find -type d -name ".*"
Поиск файлов с учётом даты модификации другого файла
Команда покажет все файлы, созданные или изменённые после файла ordinary_file.
# ls -lrt
total 0
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
---------- 1 root root 0 2009-02-19 20:31 no_for_all
# find -newer ordinary_file
.
./everybody_read
./all_for_all
./no_for_all
Чтобы найти файлы, которые новее некоторого файла, введите его имя в качестве аргумента опции-newer
. Чтобы вывести все файлы в каталоге /etс, которые новее файла /etc/motd, введите:
$ find /etc -newer /etc/motd
Поиск файлов по размеру
Примечание: минуc значит меньше указанного размера, плюс значит больше указанного размера, отсутствие знака означает равенство указанному размеру файла. Единицы измерения:
- если после размера ничего не указано, то это блок 512 байт
- символ k после размера указывает килобайты
- символ b (или с ????) — байты
- символ M — Мегабайты.
Используя опцию -size
найдём файлы больше заданного размера в домашней директории:
# find ~ -size +100M
или другой вариант указания домашней директории (ищем файлы меньше 500 байт):
# find $HOME -size -500b
Найдём файлы меньше заданного размера в домашней директории:
# find ~ -size -100M
Найдём файлы, совпадающие по размеру с указанным:
# find ~ -size 100M
Найти файлы во всей системе размером меньше 20 блоков по 512 байт (20*512=10240 байт):
# find / -size 20
Найти файлы больше 1 Гигабайта:
ls -lhR | grep 'G '
Создать сокращенные команды часто используемых алгоритмов поиска
Если вы часто используете определённые параметры поиска и не хотите постоянно вводить их, можно создать для удобства сокращенный ввод (alias, псевдоним) этих операций.
Создадим команду rmao для удаления файлов с именем a.out:
# alias rmao="find . -iname a.out -exec rm {} ;"
# rmao
Удалить файлы core (ядра), созданные программой с
# alias rmc="find . -iname core -exec rm {} ;"
# rmc