В удаленной системе (в которой я не являюсь администратором) я настроил альтернативный TMPDIR
в моем `.profile (поскольку в системе по умолчанию очень ограниченное пространство) ).
Этот альтернативный TMPDIR
, конечно, не очищается при перезагрузке. Вот почему я хочу периодически (или при входе в систему) очищать каталог. Тем не менее, я могу входить в систему несколько раз с долго выполняющимися скриптами, когда я не вошел в систему, поэтому на самом деле rm
всего содержимого не вариант.
Есть ли способ (желательно в bash
, но доступны обычные инструменты) найти файлы в определенном каталоге, которые старше, чем последняя перезагрузка, чтобы очистить мой TMPDIR
?
Этот простой лайнер -может помочь удалить все файлы и каталоги в TMPDIR
, измененные до последней перезагрузки:
$ find $TMPDIR -mindepth 1 -depth -not -newermt "$(uptime -s)" -delete
Ваш компьютер должен поддерживать uptime -s
и опцию find
-newerXY
, чтобы это работало.
Здесь -newermt
является специальной формой -newerXY
и ищет файлы и каталоги (m ), измененные после ссылки (t )imestamp, которая в данном случае является выходом uptime -s
.
Подробную информацию о -newerXY
см. в руководствеfind
.
Используя -not
, мы реверсируем -newermt
, чтобы найти файлы, которые были изменены до или точно во время последней перезагрузки, а не после нее.
-depth
заботится об обработке содержимого каталога перед самим каталогом (важно для рекурсивного удаления ).
-mindepth 1
обеспечивает сохранение самого каталога TMPDIR
.
Если вы хотите только перечислить соответствующие файлы (вместо их удаления ), просто удалите -delete
.
Если вы хотите удалить список и , просто добавьте -printf "%p\n" -delete
.