2012-10-04 61 views
3

如果我有3個文件,例如1.txt,2.txt和3.txt,它們分別創建一個小時,分別爲下午1點,下午2點和下午3點。我需要的是一個命令,它可以查找在特定文件一小時內修改過的所有文件。查找在另一個文件的一個小時內修改的文件

我在同一目錄作爲終端的文件和所有的文件都是很setuid權限

我一直想:

發現。型的F -perm -4000 -newer 2.txt -mmin -60 -print

這應返回3.txt但是它沒有

什麼會使用文件中的小時或2日後創建。文本?

回答

0

如果您在下午4點後運行這個,因爲你的榜樣,它是有道理的,它不會返回3.txt,爲-newer 2.txt -mmin -60機構「最近60分鐘修改,最近更比2.txt」,而不是「修改小於在2.txt後60分鐘「。我不認爲find目前有選擇做你想做的事情(至少,我沒有的版本),但是在pythonperl中編寫腳本應該不會太難。

1

這裏是我的邏輯 - 文件的紀元以來的秒數某些變量上次訪問

首先得到的時間。

time_in_sec=$(stat -c %X 2.txt) 

獲取最後一個小時的時間(舉例來說,3600秒回)

one_hr_old_time_in_sec=`expr $time_in_sec - 3600` 

轉換成適合find命令格式原始文件的

newerthan=$(date -d @$one_hr_old_time_in_sec '+%m-%d-%y%n %H:%M:%S') 

轉換時間,適合的格式找到命令

olderthan=$(date -d @$time_in_sec '+%m-%d-%y%n%H:%M:%S') 

使用find命令

find . -newermt "$newerthan" ! -newermt "$olderthan" -print 

如果一切正常,你可以寫一個小的shell腳本,將文件名作爲參數,可以嘗試+ 3600還可以得到兩個時間段之間修改的文件列表。
老實說,我還沒有嘗試過。希望它有效!

1

試試這個

觸摸的/ tmp /臨時-t時間1

觸摸的/ tmp/NTEMP -t時間2

發現。 -newer/tmp/temp -a!-newer/tmp/ntemp -exec ls -l {} \; 2>的/ dev/null的

其中

TIME1 =時間文件創建的 - 1小時

TIME2 =文件創建+ 1小時

實施例的時間:

TIME1 = 201210041500

time2 = 201210041700

1

以前所以因爲-newermt應該接受與'date'相同的格式,包括@N,自epoch開始N秒。

對於'stat'命令,最好使用-Y(上次修改時間)而不是-X(上次訪問時間)。

於是命令來查找文件修改+或 - 2小時2.txt是

N=$(stat -c %Y 2.txt) 
find . -newermt @$((N-3600)) ! -newermt @$((N+3600)) -print 
相關問題