
В компании, где я работаю, есть общий сетевой диск. На нем у нас есть папки для каждого отдела, плюс папки для каждого сотрудника. Есть тонны папок для сотрудников, которые уволились много лет назад, и я уверен, что то же самое относится к подпапкам в дереве отделов.
Я провел сканирование использования диска, и у меня есть обоснованное подозрение, что мы можем сэкономитьнагрузкидискового пространства путем очистки устаревших данных. Но получение обзора disk-usage-by-last-modified — это интересная задача, на которую я не смог придумать ответ.
Есть идеи? Как мне получить список папок (на разных уровнях дерева), отсортированный по дате, когда они (или файлы в них) были изменены в последний раз?
Обновление: это для Linux, но тега для «generic linux» нет (только Mint, Kali и несколько других).
решение1
Откройте проводник и перейдите в общую папку.
Нажмите 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 /?
для получения дополнительной информации об этой утилите, входящей в состав вашей Windows.
Вы даже можете создать пакетный файл и запустить его через планировщик задач для автоматического удаления старого контента.
P.S. Если вы хотите найти и удалить старые каталоги/файлы с помощью Linux, это гораздо проще:
Чтобы просмотреть старый контент:
#!/bin/sh
srcDir='/Path/to/share/'
daysAgo='360'
find "${srcDir}" \( -type f -o -type d \) -a -mtime +"${daysAgo}"
Чтобы удалить старый контент:
#!/bin/sh
srcDir='/Path/to/share/'
daysAgo='360'
find "${srcDir}" \( -type f -o -type d \) -a -mtime +"${daysAgo}" -exec rm -fd '{}' \;
Если вы хотите рекурсивно удалить каталоги, используйте rm -fdr
вместоrm -fd