Очистка каталогов, разделенных гггг / мм / дд - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть структуры каталогов, создаваемые каждый день, например / data / 2018/01/01 / data / 2018/01/02.,/ data / 2018/02/01 вот так.Теперь мне нужно сохранить только 10 последних дней и удалить остальные места. Как я могу это сделать с помощью оболочки Unix?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

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

Вы можете использовать -print перед тем, как использовать команду delete или exec rm -rf, чтобы убедиться, что все выглядит нормально:

find /data/2018 -mindepth 2 -maxdepth 2 -type d -ctime +10 -print

Затем следует удаление, если все выглядит нормально:

find /data/2018 -mindepth 2 -maxdepth 2 -type d -ctime +10 -delete

ИЛИ '-exec rm -rf'

find /data/2018 -mindepth 2 -maxdepth 2 -type d -ctime +10 -exec rm -rf {} \;

Если вы предпочитаете удалять папки сна мой взгляд, лучше сделать обзор, и я хочу привести еще один пример: отредактируйте XX, сколько дней назад вы хотите удалить с 11-го дня.

for days in {11..XX}; do rm -rf $(date --date "$days days ago" "+%Y%m%d");done|sed 's/./&\//4'|sed 's/./&\//7'|sed 's/^/\/data\//g'

Вывод:

removed directory  '/data/2018/12/14'
removed directory  '/data/2018/12/13'
removed directory  '/data/2018/12/12'
removed directory  '/data/2018/12/11'
removed directory  '/data/2018/12/10'
removed directory  '/data/2018/12/09'
removed directory  '/data/2018/12/08'
removed directory  '/data/2018/12/07'
removed directory  '/data/2018/12/06'
.......
0 голосов
/ 24 декабря 2018

Попробуйте это

find /data -mindepth 3 -maxdepth 3 -type d | sort | head -n -10 | xargs -r -d '\n' rm -rf

Это выведет список всех каталогов 3-го уровня в /data, отсортирует их в первую очередь и удалит последние 10 записей из отсортированного списка, а затем передаст их rm -rf, поэтому все они удалены.

Рекомендуется сначала проверить вывод без последней части | xargs rm -rf, прежде чем продолжить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...