如果我有3個文件,例如1.txt,2.txt和3.txt,它們分別創建一個小時,分別爲下午1點,下午2點和下午3點。我需要的是一個命令,它可以查找在特定文件一小時內修改過的所有文件。查找在另一個文件的一個小時內修改的文件
我在同一目錄作爲終端的文件和所有的文件都是很setuid權限
我一直想:
發現。型的F -perm -4000 -newer 2.txt -mmin -60 -print
這應返回3.txt但是它沒有
什麼會使用文件中的小時或2日後創建。文本?
如果我有3個文件,例如1.txt,2.txt和3.txt,它們分別創建一個小時,分別爲下午1點,下午2點和下午3點。我需要的是一個命令,它可以查找在特定文件一小時內修改過的所有文件。查找在另一個文件的一個小時內修改的文件
我在同一目錄作爲終端的文件和所有的文件都是很setuid權限
我一直想:
發現。型的F -perm -4000 -newer 2.txt -mmin -60 -print
這應返回3.txt但是它沒有
什麼會使用文件中的小時或2日後創建。文本?
如果您在下午4點後運行這個,因爲你的榜樣,它是有道理的,它不會返回3.txt
,爲-newer 2.txt -mmin -60
機構「最近60分鐘修改,最近更比2.txt
」,而不是「修改小於在2.txt
後60分鐘「。我不認爲find
目前有選擇做你想做的事情(至少,我沒有的版本),但是在python
或perl
中編寫腳本應該不會太難。
這裏是我的邏輯 - 文件的紀元以來的秒數某些變量上次訪問
首先得到的時間。
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還可以得到兩個時間段之間修改的文件列表。
老實說,我還沒有嘗試過。希望它有效!
試試這個
觸摸的/ 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
以前所以因爲-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