LINUX.ORG.RU

Подсчет веса файлов от предеоенной даты в папке без подкоталоге

 ,


0

1

Добрый день, возник вопрос как можно подсчитать вес файлов в папке без файлов в подпапке от определенной даты На bash Пример /А/ файлы весят 10мб /А/А1 файлы весят 100мб /A/a1/a2 файлы весят 15 мб

Пробовал через функцию Find ${direct} -mtime +{last_update} -type f -exec du -h {} ; Где ${direct} директория в которой надо подсчитать {last_update} время не позже которого нужно считать файлы -maxdepth в моей версии не работает Обновить нет возможности


Ответ на: комментарий от anonymous

Нет здесь обновления не ставятся так как это стоит на сервере, а обновления на нем запрещены здесь только локалка выхода в инет нету.

puzik
() автор топика

Наверно что-то такое подойдёт:

find . -mindepth 1 -maxdepth 1 -type f -mmin +60 -exec du -b {} \; | cut -f1 | paste -s -d"+" | bc

Параметры уже на свой вкус, конечно.

-type f -mindepth 1 -maxdepth 1 - файлы, только в текущей директории

-mmin +60 Собственно, критерий по времени. Для более точного отбора (дата, секунды), можно сделать через -newer (чуть посложнее будет).

cut -f1 | paste -s -d"+" | bc - берётся столько столбец с весом в байтах, вытягивается в строку вида n+m+x+y и подаётся на калькулятор (должен быть установлен предварительно).

NDfan
()
Ответ на: комментарий от puzik

Не дам, потому что ты пишешь как ленивая скотина.

anonymous
()

Лучше в несколько шагов разделить, с предварительным сбросом в текстовые файлы. Ну чтобы визуально оценивать достоверность результата.

Итог можно в bc укрупнить: last/1024^2

А какова конечная цель действий, кстати (если не секрет) ?

NDfan
()
Ответ на: комментарий от puzik

Тут проще запрограммировать, чем с find мучиться:

#Получение текущего времени в секундах
printf -v ct "%(%s)T"
# Вычитание нужного времени в часах h
mt=$((ct-h*60*60))
# сканирование каталога $dir на обычные файлы
for f in "$dir"/*; do
  [ -f "$f" ] || continue

# внутри цикла получаем время модификации файла:
   mf=$(stat -c '%Y' "$f")

# сравниваем с mt и так далее

vodz ★★★★★
()
Ответ на: комментарий от NDfan

Конечная цель сбор информации по заполнености директорий программа будет собирать логи с нужной информацией

puzik
() автор топика
Ответ на: комментарий от puzik

Чудеса, конечно :)

Ну не беда, можно скинуть первую отсортированную итерацию find в файл, далее либо вручную удалить строки, либо по количеству / попробовать фильтрануть.

Наверняка есть способы потехнологичнее, но в админских буднях бывает, что время дороже.

NDfan
()
Ответ на: комментарий от puzik

Выглядит, как будто нагляднее будет в создаваемые файлы добавить дату.

Либо написать задание, которое будет каталоги создавать, и появляющиеся файлы (уже неоткрытые!) туда прибирать:

mkdir -pv  `date +%Y/%m/%d` 

NDfan
()
Последнее исправление: NDfan (всего исправлений: 1)
Ответ на: комментарий от vodz

Суть в чем у меня есть файл конфигураций в котором я указываю разные директории которые нужно проверить , дату не раньше которого нужно считать файлы и общий вес в одной папке без ее подпапок чтобы в конечном счёте выводилось как /А/ 10мб /А/а1/ 100мб /А/А1/а2 15 мб

Мегобайты это вес файлов которые Бали созданы раньше 10 дней назад допустим

puzik
() автор топика
Ответ на: комментарий от puzik

Суть в чем у меня есть файл конфигураций в котором я указываю разные директории которые нужно проверит

Ну так я вам всё дал, в переменных же, подставляете из своего конфига и будет работать. И так уже 80% вашей работы сделал.

vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.