URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 78307
[ Назад ]

Исходное сообщение
"Как удалять файлы старше N дней???"

Отправлено ComP , 18-Янв-08 09:56 
Привет, может кто знает как решить задачу. Есть общая папка, и надо удалять файлы старше допустим месяца, как или чем это можно сделать?

Содержание

Сообщения в этом обсуждении
"Как удалять файлы старше N дней???"
Отправлено newser , 18-Янв-08 10:33 
>Привет, может кто знает как решить задачу. Есть общая папка, и надо
>удалять файлы старше допустим месяца, как или чем это можно сделать?
>

Читайте man find.


"Как удалять файлы старше N дней???"
Отправлено XAnder , 18-Янв-08 10:35 
>Привет, может кто знает как решить задачу. Есть общая папка, и надо
>удалять файлы старше допустим месяца, как или чем это можно сделать?

find путь -type f \! -newermt '1 month ago' -exec rm {} \;

или что-то в этом роде, man find точно поможет написать условие на любой вкус. Но с -exec rm осторожнее!


"Как удалять файлы старше N дней???"
Отправлено Arpo , 18-Янв-08 10:46 
>>Привет, может кто знает как решить задачу. Есть общая папка, и надо
>>удалять файлы старше допустим месяца, как или чем это можно сделать?
>
>find путь -type f \! -newermt '1 month ago' -exec rm {}
>\;
>
>или что-то в этом роде, man find точно поможет написать условие на
>любой вкус. Но с -exec rm осторожнее!

Сорри канечно, прочитал весь man find, но не нашел опции -newermt, у вас какая система если не секрет.
Для решения данной задачи всегда использовал -mtime(OS Solaris10).


"Как удалять файлы старше N дней???"
Отправлено XAnder , 18-Янв-08 10:59 
>[оверквотинг удален]
>>
>>find путь -type f \! -newermt '1 month ago' -exec rm {}
>>\;
>>
>>или что-то в этом роде, man find точно поможет написать условие на
>>любой вкус. Но с -exec rm осторожнее!
>
>Сорри канечно, прочитал весь man find, но не нашел опции -newermt, у
>вас какая система если не секрет.
>Для решения данной задачи всегда использовал -mtime(OS Solaris10).

Система FreeBSD 6.0. В man'е опция -newerXY. Выражение "! -newermt время" означает "изменён не позже указанного времени". Выражение "-mtime время" во FreeBSD даёт условие "изменён точно в указанное время" - не наш случай. Форматы времени у этих опций различаются. Как это всё выглядит в Solaris'е, не знаю, ибо не пользовался.


"Как удалять файлы старше N дней???"
Отправлено Arpo , 18-Янв-08 11:28 
>[оверквотинг удален]
>>
>>Сорри канечно, прочитал весь man find, но не нашел опции -newermt, у
>>вас какая система если не секрет.
>>Для решения данной задачи всегда использовал -mtime(OS Solaris10).
>
>Система FreeBSD 6.0. В man'е опция -newerXY. Выражение "! -newermt время" означает
>"изменён не позже указанного времени". Выражение "-mtime время" во FreeBSD даёт
>условие "изменён точно в указанное время" - не наш случай. Форматы
>времени у этих опций различаются. Как это всё выглядит в Solaris'е,
>не знаю, ибо не пользовался.

ОК, ясно.


"Как удалять файлы старше N дней???"
Отправлено newser , 18-Янв-08 15:46 
>Выражение "-mtime время" во FreeBSD даёт
>условие "изменён точно в указанное время" - не наш случай.

Это Вы в заблуждение вводите. Выражение -mtime прекрасно подходит для выяснения "изменён раньше" и "изменён позже". Внимательнее читайте man find.



"Как удалять файлы старше N дней???"
Отправлено XAnder , 18-Янв-08 19:15 
>>Выражение "-mtime время" во FreeBSD даёт
>>условие "изменён точно в указанное время" - не наш случай.
>
>Это Вы в заблуждение вводите. Выражение -mtime прекрасно подходит для выяснения "изменён
>раньше" и "изменён позже". Внимательнее читайте man find.

Да, согласен, можно написать "-mtime +30d". Однако, так нельзя записать условие "больше месяца назад" - месяцы-то разные бывают. Вот "! -newermt '1 month ago'" прокатывает отлично - но это мелочи.


"Как удалять файлы старше N дней???"
Отправлено ComP , 18-Янв-08 11:37 
Огромное Спасибо, буду РЫТЬ!!!

"Как удалять файлы старше N дней???"
Отправлено igl , 05-Июн-09 01:04 
find ./ -mtime +180|xargs rm -f   == удаляет все файлы старше 180 дней (Linux 2.6.9)


"Как удалять файлы старше N дней???"
Отправлено rfcr , 22-Окт-09 12:47 
>find ./ -mtime +180|xargs rm -f   == удаляет все файлы
>старше 180 дней (Linux 2.6.9)

Таким образом он удалит файлы время создания у которых старше 180 дней.

А время создания например может не совпадать с временем когда файл положили в расшаренную папку:
# ls -l
-rwxr--r-- 1 nobody nobody 753011808 Авг 10  2007   имя файла

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


Как тогда удалить именно те файлы, которые были скопированы старше 180 дней (180 дней назад или больше)?


"Как удалять файлы старше N дней???"
Отправлено koenig , 25-Май-10 12:51 
>[оверквотинг удален]
># ls -l
>-rwxr--r-- 1 nobody nobody 753011808 Авг 10  2007   имя
>файла
>
>Этот файл был скопирован несколько дней назад, но он будет удален, т.к.
>время его создания - 2007 год.
>
>
>Как тогда удалить именно те файлы, которые были скопированы старше 180 дней
>(180 дней назад или больше)?

find ./ -atime +180|xargs rm -f


"Как удалять файлы старше N дней???"
Отправлено rfcr , 09-Июн-10 15:43 
Спасибо!



"Как удалять файлы старше N дней???"
Отправлено aniserg , 18-Янв-14 12:03 
>[оверквотинг удален]
>>-rwxr--r-- 1 nobody nobody 753011808 Авг 10  2007   имя
>>файла
>>
>>Этот файл был скопирован несколько дней назад, но он будет удален, т.к.
>>время его создания - 2007 год.
>>
>>
>>Как тогда удалить именно те файлы, которые были скопированы старше 180 дней
>>(180 дней назад или больше)?
> find ./ -atime +180|xargs rm -f

find ./ -atime +180 -delete