簡體   English   中英

檔案時間差異

[英]Difference in file time

我正在編寫一個腳本,以使用bash腳本查找文件創建/修改時間之間的差異。 運行QNX我無法使用任何通用的主題日期函數來簡化這一過程。 我目前正在通過ls命令修改日期:

    last=0
    current=0
#ls -l /path/*.log | awk '{print $8}' | sed s/:/*60+/g | bc |
ls -l /path/*.log | awk '{print $8}' |
while read fname 
do
    current=$(fname | sed s/:/*60+/g | bc)
    echo $current
    echo $fname
    if [ $last -gt 0 ]; then
        echo "the difference is $($current - $last) minutes"
        last=$current    
    else
        last=$current
        echo $fname
    fi      
done

第一個被注釋的ls產生了我所需要的東西,以秒為單位的時間,雖然while語句不起作用,但無法找到基於整數的文件。 如果我使用第二個ls命令,則sed將不會修改基於hh:mm的日期,並且兩者之間的區別將不起作用。 有任何想法嗎?

要點您的查詢:
1.文件創建時間戳未存儲在linux中。 對於任何文件,僅存儲訪問時間修改時間更改時間 [請參閱https://stackoverflow.com/a/79824/2331887了解它們之間的區別。]
2.現在,重新考慮並確定您需要查找哪個時間戳差異。 一會是最新修改的時間將是最好的基於事實每當內容被修改 ,而其他時間差將是用於計算? [您是否正在尋找上次修改時間與最近一次修改時間之間的差異]

指向您的代碼的幾點:
1. 長清單文件說明的第8個參數將輸出
a) hh:mm用於當年修改的文件,以及
b)對於前幾年修改過的文件,使用yyyy代替hh:mm
因此,在您的計算中會出現歧義。

解決方案 :您可以使用ls --time-style='+%d-%m-%Y %H:%M' -l *.log | awk '{print $7}' ls --time-style='+%d-%m-%Y %H:%M' -l *.log | awk '{print $7}'對於要基於hh * 60 + mm計算的情況。 此計算還沒有考慮不同的日期。
相反,為了計算時差,我建議使用stat -c %Y *.log [它提供自Epoch (1970年1月1日午夜 )以來的最后修改時間( 以秒為單位 ]

2.代碼中的錯誤很小。 更改current=$(fname | sed s/:/*60+/g | bc); current=$(echo $fname | sed s/:/*60+/g | bc);
請注意,僅在文件的修改日期相同的情況下,這才提供正確的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM