Файлы размером более 1 ГБ и старше 6 месяцев

20

Я хочу найти файлы размером более 1 ГБ и старше 6 месяцев на всем сервере. Как написать команду для этого?

shinek
источник

Ответы:

37

Используйте find:

find /path -mtime +180 -size +1G

-mtimeозначает поиск времени модификации, превышающего 180 дней (+180). И -sizeпараметр ищет файлы размером более 1 ГБ.

хаос
источник
2
Обратите внимание, что в findреализациях, где Gподдерживается этот суффикс, он означает GiB (1073741824 байта), а не GB (1000000000). Портативно, вы бы использовалиfind /path -mtime +180 -size +1073741824c
Стефан Chazelas
1
если вы хотите избежать появления ошибок в списке файлов, подобных этому: find: a.txt :Permission deniedя предлагаю добавить это, 2>/dev/nullвдохновленное этим комментарием: unix.stackexchange.com/questions/42841/…
gmansour
Вы также можете xargs ls -lhSотсортировать результаты по размеру: find /path -mtime +180 -size +1G | xargs ls -lhS
user553965
@ user553965 Ваша команда не будет работать. Что на самом деле нужно , чтобы сортировать по размеру является: find / -size +1G -mtime +180 -print0 2>/dev/null | xargs -0 ls -lhS. Примечание для новичков: перенаправление 2>/dev/nullпросто избавляет от permission deniedошибок, которые неизбежно появятся при поиске от root. Для сортировки по дате последнего изменения используйте ls -lhtвместо этого и добавьте rк lsкомандам, например ls -lhSr, обратные результаты (от наименьшего к наибольшему / от самого старого до самого нового).
Mattst
6

find / -size +1G -mtime +180 -type f -print

Вот объяснение опции команды по опции: начиная с корневого каталога, он находит все файлы размером более 1 ГБ, измененные более 180 дней назад, которые имеют тип «файл», и печатает их путь.

dr01
источник