我寫了一個bash shell腳本,其中的一部分是使用find命令檢查文件是否超過30天,很遺憾,當我將它上載到我的因爲find命令被鎖定,所以它不工作。檢查一個文件是否超過30天沒有find命令
有沒有人知道如何檢查文件是否超過30天沒有find命令?
我想我需要做一個「ls -a $文件名」,然後解析日期字符串,將其轉換爲unix日期,然後將其與今天的日期進行比較,但我在unix非常生疏。
感謝
我寫了一個bash shell腳本,其中的一部分是使用find命令檢查文件是否超過30天,很遺憾,當我將它上載到我的因爲find命令被鎖定,所以它不工作。檢查一個文件是否超過30天沒有find命令
有沒有人知道如何檢查文件是否超過30天沒有find命令?
我想我需要做一個「ls -a $文件名」,然後解析日期字符串,將其轉換爲unix日期,然後將其與今天的日期進行比較,但我在unix非常生疏。
感謝
stat -c %Z filename
給,如果你想的最後修改時間在unixtime
stat -c %Y filename
上次更改時間。
讓ls
輸出UNIX時間戳,就像這樣:
ls -l --time-style='+%s'
然後從輸出中獲取的時間戳,以及simlpy計算是否有當前時間和時間戳之間的30 60秒從ls
。
可以使用
date '+%s';
嗨,謝謝,但我無法得到該命令的工作,我得到「ls:非法選項 - - 」 – 2010-11-12 08:23:21
Sjoerd的解決方案意味着一個GNU LS - 這顯然是海報沒有。 – 2010-11-12 19:34:52
您可以使用if [ $file -ot $timestamp_file ]
(-ot
意思是 「比老」)獲得當前的時間戳。您將不得不構建適當的文件,例如touch
(需要時間戳選項)。如果這是一項週期性任務,您還可以在每次運行時創建時間戳文件以供下次使用。
好的,謝謝,你知道我30天前如何得到日期,以便我可以將它傳遞給touch命令嗎? – 2010-11-12 08:14:39
@ The Frog Daddy:'touch -d「$(date -d'30 days ago')」30DAYSAGO' – 2010-11-12 19:34:03
確定這就是我到底是怎麼做的?
touch -t "$(date -v -1m +%Y%m%d%H%M)" ${DATEFILE}
if [ ${SERVERFILE} -ot ${DATEFILE} ]
謝謝大家。
這並不在Linux下工作:日期沒有-v選項
t=`date +%Y%m%d%H%M`
let u=$t-1000000
touch -t "$u" $DATEFILE
if [ $SERVERFILE -ot $DATEFILE ]; then
rm $SERVERFILE
fi
「That」是指另一個答案。答覆的順序可能會發生變化,因此應該將其作爲註釋提交 - 儘管您可能還不能評論。 – philant 2013-11-10 08:33:18
感謝大家好,我不知道該命令。應該是-f格式化爲-c不是我機器上的選項? – 2010-11-11 08:30:41
可能是:) – Kimvais 2010-11-11 08:41:43
好吧,你如何比較今天的日期來檢查是否> 30天? – 2010-11-12 08:01:21