Вопрос: сравнить дату создания + bash


В моем сценарии оболочки Необходимо сравнить дату создания j2re-1.4.2_10-fcs об / мин pkg против даты создания некоторых файлов и проверки того, является ли создание файла более новым, а затем rpm pkg creation

мой вопрос: если у кого-то есть умная идея, как сравнивать файл с созданием rpm? Чтобы узнать, является ли дата файла старше или старше, создание даты в минуту

      rpm -qi j2re-1.4.2_10-fcs | grep "Install Date"
      Install Date: Mon 20 Sep 2010 02:01:04 PM IST      Build Host: localhost.localdomain




   ls -ltr /etc/hosts
   -rw-r--r--    1 root     root          563 Sep  7 10:28 /etc/hosts

2
2017-09-21 14:19


Источник




Ответы:


В Unix не хранятся даты создания, но вы можете сравнить изменения (или получить доступ или изменить даты).

rpmdate=$(rpm -qi j2re-1.4.2_10-fcs | sed -n '/Install Date/ s/Install Date:\(.*\)Build Host:.*/\1/p')
rpmdate=$(date -d "$d" +%s)
filedate=$(stat --printf=%Y /etc/hosts)
if (( filedate > rpmdate ))
then
    echo "File is newer than RPM"
echo
    echo "File is NOT newer than RPM"
fi

1
2017-09-21 14:35



но я хочу сравнить rpm creation agains file - or100
@ or100: Извините, я неправильно понял ваш вопрос. См. Мое редактирование. - Dennis Williamson


Это должно сработать. Подходите к вашим потребностям.

#!/bin/bash

rpm_path="$1"
file_path="$2"

file_date_row=`ls -l --time-style=+%Y%m%d $file_path`
file_date=`echo "$file_date_row" | awk -F" " '{print $6}'`

rpm_date_row=`rpm -qi $rpm_path | grep "Install Date"`
rpm_year=`echo "$rpm_date_row" | cut -d " " -f 6`
rpm_month=`echo "$rpm_date_row" | cut -d " " -f 5`
rpm_day=`echo "$rpm_date_row" | cut -d " " -f 4`

case $rpm_month in
   Jan)
   rpm_date="$rpm_year""01""$rpm_day"
   ;;
  Feb)
   rpm_date="$rpm_year""02""$rpm_day"
   ;;
   Mar)
   rpm_date="$rpm_year""03""$rpm_day"
   ;;
   Apr)
   rpm_date="$rpm_year""04""$rpm_day"
   ;;
   May)
   rpm_date="$rpm_year""05""$rpm_day"
   ;;
   Jun)
   rpm_date="$rpm_year""06""$rpm_day"
   ;;
   Jul)
   rpm_date="$rpm_year""07""$rpm_day"
   ;;
   Aug)
   rpm_date="$rpm_year""08""$rpm_day"
   ;;
   Sep)
   rpm_date="$rpm_year""09""$rpm_day"
   ;;
   Oct)
   rpm_date="$rpm_year""10""$rpm_day"
   ;;
   Nov)
   rpm_date="$rpm_year""11""$rpm_day"
   ;;
   Dec)
   rpm_date="$rpm_year""12""$rpm_day"
   ;;
esac

if [[ "$rpm_date" > "$file_date" ]]
then
   echo "The RPM is newer than the file"
elif [[ "$rpm_date" < "$file_date" ]]
then
   echo "The file is newer than the RPM"
else
   echo "The file and the RPM have the same date"
fi

0
2017-09-21 15:30