Удаление файлов старше 1 месяца, но оставить файлы, созданные в первый день месяца

Я пытаюсь удалить некоторые архивные файлы из папки на файловом сервере CentOS с помощью cronjob. Требования:

  1. Удалить файлы за последний месяц
  2. Файл .tgz первого дня месяца должен быть оставлен нетронутым.

Я знаю, что я могу удалить файлы старше x дней с:

find /path -mtime +30 -exec rm {} \; 

Однако это не оставит в одиночестве архив, созданный в первый день месяца. Интернет, похоже, не дает ответа (пока).

Сначала записка

В файловых системах unix у вас нет информации о времени создания файла. То, что часто называют ctime, – это время изменения статуса файла. Это может быть изменено путем переименования файлов или изменений разрешений.

См. Эту ссылку для получения дополнительной информации.

Поэтому будьте предупреждены, что следующее решение может быть неудачным.

Решение с помощью awk

find не имеет оператора для выбора специальной даты. Таким образом, трюк заключается в создании вывода с днем ​​месяца и именем файла и использованием разделителя, который не является частью имен файлов. Я предполагаю, что # является таким возможным разделителем char.

  find . -mtime +30 -printf "%Cd#%p\n" 

На втором этапе вы можете отфильтровать нежелательные файлы.

  find . -mtime +30 -printf '%Cd#%p\n' |awk -F'#' '$1 !~ /^01/{print $2;}' 

Решение с помощью grep и cut

Выполнение того же трюка, что и выше.

  find . -mtime +30 -printf '%Cd#%p\n' |grep -v '^01' |cut -d '#' -f 2 
  • Как копировать файлы с помощью SSH?
  • Проблема Grub с двойной загрузкой Ubuntu & XP (сначала установлен Ubuntu)
  • Как настроить громкость звука каждый раз, когда я нажимаю клавиши изменения громкости?
  • Как перемещать файлы в определенные папки на основе записей CSV?
  • Почему Windows Exe не работает в Linux?
  • Как создать 1 ГБ случайный файл в Linux?
  • Найти файлы документов и скопировать их в другой каталог
  • Два раздела на USB-накопителе
  • Как создать видео с изображений с помощью FFmpeg?
  • Как определить, был ли взломан мой Linux-компьютер?
  • Как автоматически перезапустить MySQL и MongoDB, когда они не реагируют?
  • Interesting Posts

    Расчет расстояния между двумя широтами и долготами GeoCoordinates

    Является ли проблема утечки памяти «неопределенным поведением» в C ++?

    Получение ошибки «Только один экземпляр этого приложения может работать» при обновлении Flash Player для Firefox и IE

    Идентификатор ASP.NET – несколько наборов объектов для каждого типа не поддерживаются

    Почему Windows 7 использует файл страницы, когда есть свободная физическая оперативная память?

    Лучший способ писать байты в середине файла в Java

    Расширьте Linux Desktop до другого экрана X Windows

    Хранение экземпляра инжектора для использования в компонентах

    Сколько проходов достаточно с Memtest?

    Использование внутреннего classа

    Java вычисляет шестнадцатеричное представление SHA-1 дайджеста строки

    Как создать и использовать очередь в Objective-C?

    Что мне делать при запуске приложения триггеров, повторяющих бесконечный самозапуск установщика Windows?

    Дизайн – Где должны регистрироваться объекты при использовании Windsor

    Можем ли мы редактировать свойства BIOS на рабочем столе?

    Давайте будем гением компьютера.