Удалить файлы старше X дней с помощью самого последнего измененного файла

Возможность (я думаю, должны быть лучшие):

echo `echo "Hello world" | wc -c` ",Hello world" | sed 's/ ,/,/g'
1
09.10.2017, 15:38
2 ответа

С инструментами GNU:

find. -type f -printf '%T@:%p\0' |
  sort -rzn |
  awk -v RS='\0' -v ORS='\0' -F: -v d=10 '
    NR == 1 {t = $1 - 86400 * d}
    $1 < t, 0 {sub(/[^:]*:/, ""); print}' |
  xargs -r0 echo rm

(удалите echoкогда счастливы ).

Мы получаем findдля печати 123456.123:./path/to/file<NUL>для каждого файла (, где 123456.123— время последней модификации файлов ).

Мы сортируем это численно (, поэтому самый новый файл идет первым ), а затем с помощью awkнаходим файлы, которые более чем на 10 дней старше самого нового файла (, найденного в первой записи. в этом отсортированном списке ).

2
27.01.2020, 23:33

Я думаю, что приведенная ниже команда поможет, если вы работаете с операционной системой на базе Linux.

find /path/to/directory/ -mindepth 1 -mtime +7 -delete

+7 = переменная, которая означает, что файлы старше 7 дней будут удалены

Будьте осторожны с пробелами, кавычками в rm.

0
27.01.2020, 23:33

Теги

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