Linux系統下檢視某檔案修改的時間戳

2021-07-03 03:26:17 字數 3712 閱讀 1093

檢視檔案時間戳命令:stat awk.txt

file: `awk.txt'

size: 20  blocks: 8  io block: 4096  regular file

device: 801h/2049d  inode: 380730  links: 1

access: (0644/-rw-r--r--) uid: (  0/  root)  gid: (  0/  root)

access: 2008-04-26 01:50:44.000000000 +0800

modify: 2008-04-26 01:48:18.000000000 +0800

change: 2008-04-26 01:48:18.000000000 +0800

說明:access訪問時間。modify修改時間。change狀態改變時間。可以stat *檢視這個目錄所有檔案的狀態。

現在是要過濾出modify的時間戳,並以yyyymmddhhss格式儲存,則可以利用下面這條命令:

stat awk.txt | grep -i modify | awk -f. '' | awk ''| awk -f- '' | awk -f: ''

輸出結果:20080426014818

修改檔案時間與建立新檔案:touch

[root@linux ~]# ls -l /etc/man.config

-rw-r--r-- 1 root root 4506 apr 8 19:11 /etc/man.config

[root@linux ~]# ls -l --time=atime /etc/man.config

-rw-r--r-- 1 root root 4506 jul 19 17:53 /etc/man.config

[root@linux ~]# ls -l --time=ctime /etc/man.config

-rw-r--r-- 1 root root 4506 jun 25 08:28 /etc/man.config

看到了嗎?在預設的情況下,ls顯示的是該檔案的mtime,也就是這個檔案的內容上次更改的時間。我的系統是在6/25安裝的,因此,這個檔案產生但狀態更改的時間就回溯到那個時間點。因為剛才的範例中使用到這個檔案,所以,它的atime就會變成剛剛使用的時間了。

檔案的時間很重要,因為如果誤判檔案時間,可能會造成某些程式無法順利執行。那麼,萬一我發現了乙個檔案來自將來(很多時候會有這個問題的。我們在安裝的時候,提到的gmt時間就是那個意思),該如何讓該檔案的時間變成「現在」的時刻呢?很簡單,用touch命令即可。

[root@linux ~]# touch [-acdmt] 檔案

引數:-a : 僅修改access time。

-c : 僅修改時間,而不建立檔案。

-d : 後面可以接日期,也可以使用 --date="日期或時間"

-m : 僅修改mtime。

-t : 後面可以接時間,格式為 [yymmddhhmm]

範例:

範例一:新建乙個空的檔案。

[root@linux ~]# cd /tmp

[root@linux tmp]# touch testtouch

[root@linux tmp]# ls -l testtouch

-rw-r--r-- 1 root root    0 jul 19 20:49 testtouch

# 注意,這個檔案的大小是0。在預設的狀態下,如果touch後面接檔案,

# 則該檔案的3個時間(atime/ctime/mtime)都會更新為當前時間。若該檔案不存在,

# 則會主動建立乙個新的空檔案。例如上面這個例子。

範例二:將 ~/.bashrc複製成為bashrc,假設複製完全的屬性,檢查其日期。

[root@linux tmp]# cp ~/.bashrc bashrc

[root@linux tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc

-rwxr-xr-x 1 root root 395 jul 4 11:45 bashrc <==這是mtime

-rwxr-xr-x 1 root root 395 jul 19 20:44 bashrc <==這是atime

-rwxr-xr-x 1 root root 395 jul 19 20:53 bashrc <==這是ctime

# 在這個案例中,我們使用了 ; 命令分隔符,它的用法我們會在bash shell中提到。

# 此外,ll是ls -l的命令別名,這個也會在bash shell中再次提及,

# 當前可以簡單地想成,ll就是ls -l的簡寫。至於 ; 則是同時發出兩個命令,

# 且讓兩個命令「按順序」執行的意思。上面的結果中可以看到,該檔案更改的日期

# jul 4 11:45,但是atime與ctime不一樣。

範例三:修改案例二的bashrc檔案,將日期調整為兩天前。

[root@linux tmp]# touch -d "2 days ago" bashrc

[root@linux tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc

-rwxr-xr-x 1 root root 395 jul 17 21:02 bashrc

-rwxr-xr-x 1 root root 395 jul 17 21:02 bashrc

-rwxr-xr-x 1 root root 395 jul 19 21:02 bashrc

# 與上乙個範例比較,本來是19日的變成了17日了(atime/mtime)。

# 不過,ctime並沒有跟著改變。

範例四:將上個範例的bashrc日期改為2005/07/15 2:02。

[root@linux tmp]# touch -t 0507150202 bashrc

[root@linux tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc

-rwxr-xr-x 1 root root 395 jul 15 02:02 bashrc

-rwxr-xr-x 1 root root 395 jul 15 02:02 bashrc

-rwxr-xr-x 1 root root 395 jul 19 21:05 bashrc

# 注意,日期在atime與mtime都改變了,但ctime則是記錄當前的時間。

通過touch命令,可以輕鬆地修改檔案的日期與時間。並且,也可以建立乙個空檔案。不過,要注意的是,即使複製乙個檔案,複製所有屬性,但也沒有辦法復 制ctime屬性。ctime可以記錄檔案最近改變狀態(status)的時間。無論如何,還是要說明一下,我們平時看的檔案屬性中,比較重要的還是 mtime。我們關心的常常是這個檔案的「內容」是什麼時候更改的。

touch這個命令最常用的情況是:

• 建立乙個空檔案。

• 將某個檔案日期修改為當前日期(mtime與atime)。

1、訪問時間,讀一次這個檔案的內容,這個時間就會更新。比如對這個檔案使用more命令。ls、stat命令都不會修改檔案的訪問時間。

2、修改時間,對檔案內容修改一次,這個時間就會更新。比如:vi後儲存檔案。ls -l列出的時間就是這個時間。

3、狀態改變時間。通過chmod命令更改一次檔案屬性,這個時間就會更新。檢視檔案的詳細的狀態、準確的修改時間等,可以通過stat命令 檔名。

Linux系統下檢視某檔案修改的時間戳

linux系統下檢視某檔案修改的時間戳檢視檔案時間戳命令 stat awk.txt file awk.txt size 20 blocks 8 io block 4096 regular file device 801h 2049d inode 380730 links 1 access 0644 ...

Linux系統下如何檢視及修改檔案讀寫許可權

檢視檔案許可權的語句 在終端輸入 ls l 是檔名 那麼就會出現相類似的資訊,主要都是這些 rw rw r 一共有10位數 其中 最前面那個 代表的是型別 中間那三個 rw 代表的是所有者 user 然後那三個 rw 代表的是組群 group 最後那三個 r 代表的是其他人 other 然後我再解釋...

Linux系統下如何檢視及修改檔案讀寫許可權

檢視檔案許可權的語句 在終端輸入 ls l 是檔名 那麼就會出現相類似的資訊,主要都是這些 rw rw r 一共有10位數 其中 最前面那個 代表的是型別 中間那三個 rw 代表的是所有者 user 然後那三個 rw 代表的是組群 group 最後那三個 r 代表的是其他人 other 然後我再解釋...