Проверьте дату файла в Unix - PullRequest
0 голосов
/ 09 октября 2009

В моем сценарии оболочки Unix у меня есть цикл for и цикл по файлам в каталоге, я хочу проверить, что дата изменения файла превышает некоторое количество дней, скажем 10 дней, и выполнить некоторую обработку. Любая помощь в этом отношении высоко ценится.

Ответы [ 2 ]

5 голосов
/ 09 октября 2009

Команда find имеет встроенный тест для этого:

find <yourdir> -type f -mtime +10 -exec yourproc {} \;

Это приведет к запуску «yourproc match_filename» для каждого файла в <yourdir> старше 10 дней.

Тест -ctime работает аналогично, используя время изменения индекса, а не время модификации.

3 голосов
/ 09 октября 2009

найти. -mtime + 10

Это может быть интегрировано в скрипт несколькими способами. Для одного:

isOlder () {
    [ "`find $1 -mtime +10`" == "$1" ]
    return $?
}

ls | while read fname; do
  if isOlder "$fname"; then
    echo $fname is older 
  else
    echo $fname is not older
  fi
done

Я перечислил выше, потому что это звучало так, будто вы в основном хотели провести тест и выполняли другую обработку. OTOH, если вам действительно нужны старые файлы:

$ find . -mtime +10 | while read fname; do
>   echo $fname
> done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...