Удаление файлов на основе даты, указанной в имени файла

В каталоге у меня есть некоторые zip-файлы, как показано ниже:

DBSOURCE20150601.gz WINDOWS20150504.gz NETWORK20150609.gz PATCHTEST20150512.gz ................. ................ 

Я хочу удалить zip-файлы, которые старше 10 дней, в зависимости от даты, указанной в имени файла. Например,

 WINDOWS20150604.gz is file having date 4 June 2015. 

Я пытаюсь выполнить следующие, но не уверен, почему его удаление всех zip-файлов вместо 10 дней старше:

 ten_days=$(date -d "10 days ago" +%Y%m%d) for f in *[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].gz; do date=${f#*} date=${date%.gz} (( $date < $ten_days )) && rm "$f" done 

2 Solutions collect form web for “Удаление файлов на основе даты, указанной в имени файла”

Дата не извлекается должным образом из имени файла. Для этого вам необходимо сделать следующее

  date=${f#*} date=${date%.gz} date=`echo $date| rev ` date=${date:0:8} date=`echo $date| rev ` 

Эта дата теперь может использоваться для сравнения и удаления

Я думаю, вы надеялись, что в первой строке, например, команда date=${f#*} удалит DBSOURCE из переменной f потому что вы указали ее на *[0-9]...[0-9].gz . Вы не можете использовать * в date=${f#*} чтобы удалить первую часть из переменной, так как * в этом примере не передается отдельно в цикл for как DBSOURCE .

Если структура имени файла всегда одинакова, вы можете просто использовать

 date=${f//[^0-9]/} 

для удаления всех нецифровых символов (на самом деле заменить все незнатные символы на «ничего»)

Другой способ – использовать tr для извлечения даты:

 date=`echo $f|tr -d '[:alpha:] [:punct:]'` 
  • Есть ли такая утилита, как `watch`, за исключением события?
  • linux serial aut root login
  • Linux яркость экрана Debian застряла на высокой скорости в macbook
  • Как избавиться от сбоев питания при использовании Linux?
  • Найти процесс в кеше или буфере
  • Удалить фото из каталога My Pics
  • Какие алгоритмы замены страниц используются в Unix & Linux?
  • Отчет о необычной памяти Linux
  • Помогите мне в установке дистрибутива Linux на Apple TV 2?
  • Какой пользователь выполняет команды, определенные в /etc/rc.local?
  • Как получить информацию о памяти процесса из программы C?
  • Interesting Posts

    Забудьте хэшированное исполняемое местоположение в интерактивной оболочке bash

    RHEL6 Библиотеки совместимости и инструменты разработки через RPM?

    Создание папки с удалением Невозможно восстановить

    Значение fsync () в настройке sshfs + LUKS

    заблокировать устройство локальной сети по MAC-адресу с помощью dnsmasq

    Почему UNIX-оболочки похожи на это и как я могу обойти это?

    Как полностью перестроить загрузочный раздел с помощью grub?

    Будет ли rsync использовать дельта-кодирование, даже когда я копирую между локальными жесткими дисками?

    Являются ли приложения на одной рабочей среде Linux совместимыми с другой средой рабочего стола?

    Как сгенерировать записи SSHFP с помощью OpenWrt / Dropbear?

    создать тире

    Не удалось открыть файл конфигурации netctl @ .service.

    Что означает «указать несколько шаблонов поиска» на `-e` в grep?

    Linux как производительность виртуализации хоста и клиента в Core i7?

    Загрузите сайт HTTPS только через имя пользователя и пароль с помощью wget?

    Linux и Unix - лучшая ОС в мире.