Инструмент Filelight / TreeSize / DiskUsage, но для дат?

272
KlaymenDK

Компания, в которой я работаю, имеет общий сетевой диск. На нем у нас есть папки для каждого отдела, плюс папки для каждого сотрудника. Есть много папок для сотрудников, которые ушли много лет назад, и я уверен, что то же самое относится и к подпапкам в дереве отдела.

Я запустил сканирование использования диска, и у меня есть обоснованное подозрение, что мы можем сэкономить много места на диске, удалив устаревшие данные. Но получить представление об использовании диска по дате последнего изменения - интересная задача, на которую я не смог найти ответ.

Есть идеи? Как получить список папок (на разных уровнях дерева), отсортированных по дате их последнего изменения (или файлов в них)?

Обновление: это для Linux, но нет тега для «универсального Linux» (только Mint, Kali и некоторые другие).

0
В проводнике файлов есть столбец «Дата изменения» (в подробном представлении), если щелкнуть по нему, вы получите отсортированный список каталогов по времени. Также такая утилита, как [WinDirStat] (https://windirstat.net/) даст вам наглядную картину того, какие файлы занимают место. Alex 5 лет назад 0
@ Алекс да, но сортировка по дате изменения применима только к текущей папке, и я должен сделать это для тонны вложенных папок, которые не будут эффективными. KlaymenDK 5 лет назад 0

1 ответ на вопрос

3
Alex

Откройте проводник и перейдите в общую папку.

Нажмите F3клавишу на клавиатуре, вы увидите в раскрывающемся меню поля поиска, нажмите на
Date modified:под Add a search filterи выберите временной фильтр, как вам нужно. Вы можете выбрать критерии поиска из предопределенных шаблонов или ввести в поле поиска диапазон дат:

datemodified:‎1/‎1/‎2000 .. ‎8/‎22/‎2018 

Если вам нужно найти файлы / папки, которые не были изменены после некоторой даты, вы можете использовать <символ перед датой:

datemodified:‎<1/‎1/‎2010 

Он найдет рекурсивно все файлы и папки старше 1/1/2010

Когда проводник прекратит поиск, переключитесь в режим просмотра Detailsи нажмите на столбец, Date modifiedчтобы отсортировать найденные файлы и папки и удалить те, которые больше не используются.

Вы также можете выполнить поиск по дате accessedили createdдате, используя фильтр поиска, как:
datecreated:
dateaccessed:

Если вы хотите автоматизировать удаление старого контента, вы можете использовать консольную утилиту: forfiles

Чтобы рекурсивно удалить папки / файлы, которые не были изменены год назад и позже, из папки C:\SomeFolder:

forfiles /s /p "C:\SomeFolder" /d -365 /c "cmd /c del @path" 

Если вы хотите просто перечислить старые файлы / папки, а не удалять их, вы можете использовать:

forfiles /s /p "C:\SomeFolder" /d -365 /c "cmd /c echo @path [@fdate]" 

Используйте forfiles /?для получения дополнительной информации об этой утилите, включенной в ваши окна

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


PS Если вы хотите найти и удалить старые каталоги / файлы с помощью Linux, это намного проще:

Чтобы перечислить старый контент:

#!/bin/sh  srcDir='/Path/to/share/' daysAgo='360'  find "$" \( -type f -o -type d \) -a -mtime +"$" 

Чтобы удалить старый контент:

#!/bin/sh  srcDir='/Path/to/share/' daysAgo='360'  find "$" \( -type f -o -type d \) -a -mtime +"$" -exec rm -fd '{}' \; 

Если вы хотите удалить каталоги рекурсивно, используйте rm -fdrвместоrm -fd

Смотрите [этот ответ] (https://superuser.com/a/1222237/432690) о `-exec rm {} \;`. Kamil Maciorowski 5 лет назад 0

Похожие вопросы