我正在嘗試編寫一個crontab,它檢查某個指定目錄內部並檢查這些文件是否超過一個小時。布爾檢查文件是否在過去一小時內被打開
!#/bin/bash
for F in /My/Path/*.txt;do
if [ ***TEST IF FILE WAS OPENED IN THE PAST HOUR *** ]
then
echo "$F"
fi
done
感謝您的幫助
我正在嘗試編寫一個crontab,它檢查某個指定目錄內部並檢查這些文件是否超過一個小時。布爾檢查文件是否在過去一小時內被打開
!#/bin/bash
for F in /My/Path/*.txt;do
if [ ***TEST IF FILE WAS OPENED IN THE PAST HOUR *** ]
then
echo "$F"
fi
done
感謝您的幫助
使用GNU date
更嚴格的方法,其中有一個選項-r
-r, --reference=FILE
display the last modification time of FILE
使用上面,在你的腳本結合
#!/bin/bash
for filename in /My/Path/*.txt ; do
if (((($(date +%s) - $(date -r "$filename" +%s))/60) <= 60)); then
echo "$filename"
fi
done
的邏輯很直接,我們正在修改文件通過用當前時間減去文件的修改EPOCH
來以分鐘爲單位的時間。如果文件在60 minutes
內被修改,則打印特定文件。
這可以用一個簡單的完成找到
find /path/to/directory -type f -newermt "1 hours ago"
訪問/任何文件在過去一小時內修改將打印到標準輸出。無需循環和打印。
#/bin/bash
OLD_FILES=$(find /path/to/directory -type f -newermt "1 hours ago")
if [[ -n $OLD_FILES ]]; then
echo "$OLD_FILES"
else
echo "No old files found in dir"
fi
你總是可以管的結果到一個日誌文件,如果你嘗試編譯列表以及
find /path/to/directory -type f -newermt "1 hours ago" >> $yourLogFile
只需使用找到'找到/我的/路徑/ -name「* .TXT '-mmin + 30' – 123
請記住,在某些情況下,此信息可能根本不可用(例如,如果文件系統是使用noatime裝入的)。 – FatalError