2011年7月21日 星期四

找出從特定日期到今天有被修改過的檔案

今天朋友問我他想要找2011/01/01到今天有被修改過的檔案,該用什麼指令來找?我本來想用ls來寫,沒想到還真難寫,後來找到find指令有這個功能,但是要輸入天數,結果又寫了一個計算天數的程式,我才發現,linux居然沒有可以計算天數的指令?!只好自己寫了一個小script來用

#!/bin/bash -
#===============================================================================
#
#          FILE:  find-after-date-files.sh
#
#         USAGE:  ./find-after-date-files.sh 日期(20110101 or 2011-01-01 or 2011/01/01)
#
#   DESCRIPTION:  從$AFTER_DATE到今天,將被修改過的檔案過濾出來
#
#       OPTIONS:  ---
#  REQUIREMENTS:  ---
#          BUGS:  ---
#         NOTES:  ---
#        AUTHOR: Max Wu (),
#       COMPANY: Open Source
#       CREATED: 2011年07月21日 10時03分42秒 CST
#      REVISION:  1.0
#===============================================================================

set -o nounset                              # Treat unset variables as an error

#將日期帶入
AFTER_DATE="$1"

#把指定的日期轉換成unix time
TIME1=`date --date="$AFTER_DATE" +%s`

#將今日日期轉換成unix time
TIME2=`date +%s`

#將兩個日期相減算出相差的天數
DAYS=`expr $TIME2 - $TIME1`
DAYS=`expr $DAYS / 60 / 60 / 24`

#將天數帶入,找出這些天來有被修改過的檔案
find -mtime -$DAYS -type f
如果有計算天數更好的算法,歡迎提供阿!!