Командная строка: Как найти файлы в папке temp_files, которые не изменялись более 7 дней, и вывести их общий размер?

Для решения этой задачи можно использовать несколько подходов в зависимости от операционной системы.

**Linux / macOS (Bash)**

Самый удобный способ — команда `find` в сочетании с `du` или `awk`:

bash
find ./temp_files -type f -mtime +7 -ls | awk ‘{sum += $7} END {print «Общий размер: » sum » байт»}’

Здесь:
— `-type f` — ищем только файлы (не директории);
— `-mtime +7` — файлы, у которых время последней модификации превышает 7 дней;
— `-ls` — выводит подробную информацию, включая размер (7-й столбец в байтах);
— `awk` суммирует размеры и выводит итог.

Если нужен вывод в мегабайтах:

bash
find ./temp_files -type f -mtime +7 -ls | awk ‘{sum += $7} END {printf «Общий размер: %.2f MBn», sum/1048576}’

Альтернативный вариант с `du`:

bash
find ./temp_files -type f -mtime +7 -print0 | du —files0-from=- -ch | tail -1

Флаг `-print0` и `—files0-from=-` обеспечивают корректную обработку файлов с пробелами в именах. `tail -1` выводит только итоговую строку с суммарным размером.

**Windows (PowerShell)**

powershell
$files = Get-ChildItem -Path .temp_files -File -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) }
$totalSize = ($files | Measure-Object -Property Length -Sum).Sum
Write-Host «Общий размер: $([math]::Round($totalSize / 1MB, 2)) MB»

Здесь:
— `Get-ChildItem` с флагом `-File -Recurse` рекурсивно ищет все файлы;
— `Where-Object` фильтрует по дате последней записи;
— `Measure-Object -Sum` суммирует размеры.

**Windows (CMD / batch)**

В классической командной строке Windows нет встроенных средств для суммирования размеров, поэтому рекомендуется использовать PowerShell или утилиты forfiles:

cmd
forfiles /P temp_files /S /D -7 /C «cmd /c echo @path @fsize»

Эта команда выведет пути и размеры файлов старше 7 дней, но суммирование потребует дополнительной обработки.

**Практические советы:**
— Всегда сначала запускайте команду без удаления, чтобы убедиться в корректности выборки;
— Используйте `-mtime +7` (строго больше 7 дней), а не `+6` — в `find` значение округляется вниз;
— Для продакшн-скриптов добавьте логирование результатов в файл с помощью перенаправления вывода `>> log.txt`.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.