2016-10-18 63 views
0

如果在30分鐘內沒有創建目錄中的任何文件,我需要創建一個bash腳本來運行另一個腳本命令。linux bash找不到執行

我不確定我需要的代碼,但它需要找到並執行,如果不匹配。 -

find/folder/to/watch/* if-not 30 mins -exec fixscript.sh什麼?

當腳本運行我想它來檢查文件的文件夾中,如果一個文件尚未最後30分鐘內創建,然後再執行fixscript.sh

在此先感謝

回答

2

我不認爲這可以結合到一個單一的發現聲明。以下是可行的,但需要注意的是,如果文件被修改,它會被檢測爲「比30分鐘更新」。

if [ `find /folder/to/watch -mmin -30 | wc -l` -eq 0 ]; then 
    /path/to/fixscript.sh 
fi 

Linux/Unix沒有獨立的文件創建屬性。但是,某些文件系統可能會擁有它,但無法從沒有c代碼的shell進行訪問並調用stat()。這使用「文件修改」時間戳,不僅在文件創建時進行更改,而且還進行文件編輯。

哈努哈利

+1

'find/folder/to/watch -mmin -30 | grep -q'。*'|| fixscript.sh'會更有效率。沒有必要看*多少*輸出'find'產生;我們只需要確定它是否產生任何東西。 – chepner

+0

'if [[-z「$(find ... -print -quit)」]];然後fixscript.sh; fi'也可以;將'find'的輸出限制爲一個字符串,可以捕獲它並檢查其輸出是否爲空。 – chepner

0

在Linux中你沒有創造時間的元數據,但只有最後修改時間,上次更改文件狀態和上次訪問時間。

你可以這樣做:

if test ! [`find "your_file" -mmin +30`] 
then 
    `path/to/your/script.sh` 
fi 

-mmin選項是給你的最後修改時間。