Я хочу найти файлы размером более 1 ГБ и старше 6 месяцев на всем сервере. Как написать команду для этого?
shell-script
command-line
files
find
shinek
источник
источник
find
реализациях, гдеG
поддерживается этот суффикс, он означает GiB (1073741824 байта), а не GB (1000000000). Портативно, вы бы использовалиfind /path -mtime +180 -size +1073741824c
find: a.txt :Permission denied
я предлагаю добавить это,2>/dev/null
вдохновленное этим комментарием: unix.stackexchange.com/questions/42841/…xargs ls -lhS
отсортировать результаты по размеру:find /path -mtime +180 -size +1G | xargs ls -lhS
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
, обратные результаты (от наименьшего к наибольшему / от самого старого до самого нового).find / -size +1G -mtime +180 -type f -print
Вот объяснение опции команды по опции: начиная с корневого каталога, он находит все файлы размером более 1 ГБ, измененные более 180 дней назад, которые имеют тип «файл», и печатает их путь.
источник