tgoop.com/srv_admin/1735
Last Update:
Возникла на днях рутинная задача по очистке одного диска от старых файлов, так как заканчивалось место, а старые файлы уже не нужны. Но перед тем, как их удалить, захотел посмотреть, сколько я освобожу места, захватив тот или иной период времени. В итоге получилась вот такая конструкция:
find /mnt/zz_archive/upload -type f -size +30M -newermt '2018-01-01 00:01' ! -newermt '2018-06-30 23:59' -exec ls -lh '{}' \; | awk '{print $5}' | sed 's/.$//' | awk '{n += $1}; END{print n}'
Сначала использую стандартный синтаксис find: ищу файлы больше 30 мегабайт и в заданном интервале времени. Затем в консоль вывожу информацию с помощью ls о каждом файле, указав размер в мегабайтах (ключ -h). Далее печатаю только столбец с размером с помощью awk, в этом столбце в конце убираю последний символ, так как он содержит букву M (было 512М стало 512). Потом суммирую то, что осталось. То есть только столбец с размером в мегабайтах.
Решение ни на что не претендует. Просто сходу что пришло в голову, так и реализовал. Наверняка кто-то придумает другое решение, возможно значительно проще. Я обычно не заморачиваюсь на таких разовых задачах. Главное быстро решить вопрос и записать решение, чтобы потом заново его не изобретать.
#bash #terminal
BY ServerAdmin.ru
Share with your friend now:
tgoop.com/srv_admin/1735