Linux下find命令在目錄結(jié)構(gòu)中搜索文件,并執(zhí)行指定的操作框产。Linux下find命令提供了相當多的查找條件错洁,功能很強大。由于find具有強大的功能描睦,所以它的選項也很多忱叭,其中大部分選項都值得我們花時間來了解一下今艺。即使系統(tǒng)中含有網(wǎng)絡文件系統(tǒng)(?NFS),find命令在該文件系統(tǒng)中同樣有效埂息,只你具有相應的權(quán)限遥巴。?在運行一個非常消耗資源的find命令時,很多人都傾向于把它放在后臺執(zhí)行拾弃,因為遍歷一個大的文件系統(tǒng)可能會花費很長的時間(這里是指30G字節(jié)以上的文件系統(tǒng))豪椿。
1.命令格式:
語法 :find[路徑][參數(shù)]
‘-atime +n/-n’ : 訪問或執(zhí)行時間大于/小于n天的文件
‘-ctime +n/-n’ : 寫入携栋、更改inode屬性(例如更改所有者、權(quán)限或者鏈接)時間大于/小于n天的文件
‘-mtime +n/-n’ : 寫入時間大于/小于n天的文件
-type??查找某一類型的文件鸯隅,諸如:
b?-?塊設備文件向挖。
d?-?目錄。
c?-?字符設備文件跟畅。
p?-?管道文件。
l?-?符號鏈接文件奸攻。
f?-?普通文件虱痕。
[root@localhost ~]# yum install -y mlocate? ? 安裝find
[root@localhost ~]# find / -type f -mtime -1? 查找一天以內(nèi)的文件
[root@localhost ~]# find /etc/ -type f -mtime -1??查找etc文件夾一天以內(nèi)的文件
/etc/resolv.conf
/etc/group
/etc/gshadow
/etc/tuned/active_profile
文件的 Access time也就是 ‘a(chǎn)time’ 是在讀取文件或者執(zhí)行文件時更改的皆疹。文件的 Modified time也就是 ‘mtime’ 是在寫入文件時隨文件內(nèi)容的更改而更改的略就。文件的 Change time也就是 ‘ctime’ 是在寫入文件晃酒、更改所有者、權(quán)限或鏈接設置時隨inode的內(nèi)容更改而更改的崔兴。 因此蛔翅,更改文件的內(nèi)容即會更改mtime和ctime,但是文件的ctime可能會在 mtime 未發(fā)生任何變化時更改堰燎,例如笋轨,更改了文件的權(quán)限爵政,但是文件內(nèi)容沒有變化。 如何獲得一個文件的atime mtime 以及ctime 钾挟?
‘stat’ 命令可用來列出文件的 atime、ctime 和 mtime处渣。
[root@localhost ~]# find /etc/ -type f -mtime -1 -name "*.conf"? ?
/etc/resolv.conf
查找硬鏈接
[root@localhost ~]# ln 1_heard.txt /tmp/1.txt.bak
[root@localhost ~]# ls -l 1_heard.txt
-rw-r--r--. 2 root root 0 12月 23 08:57 1_heard.txt
[root@localhost ~]# ls -i 1_heard.txt
67154010 1_heard.txt
[root@localhost ~]# find / -inum 67154010
/root/1_heard.txt
/tmp/1.txt.bak
查找一個小時以內(nèi)的
[root@localhost ~]# find /root/ -type f -mmin -60
/root/1_heard.txt
羅列詳細信息
[root@localhost ~]# find /root/ -type f -mmin -60 -exec ls -l {} \;
-rw-r--r--. 2 root root 0 12月 23 08:57 /root/1_heard.txt
查找出來,再改名
[root@localhost ~]# find /root/ -type f -mmin -60 -exec mv {} {}.bak \;
[root@localhost ~]# find /root/ -type f -mmin -60
/root/1_heard.txt.bak
查找root目錄下黍衙,文件大小小于10k的文件荠诬,并列出詳細信息
[root@localhost ~]# find /root/ -type f -size -10k -exec ls -lh {} \;
-rw-r--r--. 1 root root 18 12月 29 2013 /root/.bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 /root/.bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 /root/.bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 /root/.cshrc
-rw-r--r--. 1 root root 129 12月 29 2013 /root/.tcshrc
-rw-------. 1 root root 1.3K 10月 30 23:13 /root/anaconda-ks.cfg
-rw-------. 1 root root 2.4K 12月 22 08:42 /root/.bash_history
-rw-r--r--. 1 root root 381 12月 14 07:51 /root/.ssh/authorized_keys
-rw-r--r--. 1 root root 172 12月 15 09:30 /root/.ssh/known_hosts
-rwxrwxrwx. 1 hch1 hch 0 12月 20 08:36 /root/word1.txt
-rw-r--r--. 1 root root 0 12月 20 08:37 /root/word2.txt
-rw-r--r--. 1 root root 0 12月 20 08:44 /root/hello/1.txt
-rw-r--r--. 1 root root 0 12月 20 08:44 /root/88/1.txt
-rw-r--r--. 1 root root 20 12月 20 08:53 /root/dirb/filee
-rw-r--r--. 1 hch1 root 0 12月 21 08:26 /root/hch/123.txt
-rw-rw-r--. 1 root root 0 12月 21 08:26 /root/hch/1234.txt
-rw-rw-r--. 1 root root 0 12月 21 08:28 /root/hch/456.txt
-rw-rw-r--. 1 root root 0 12月 21 08:29 /root/hch/789.txt
-rw-rw-r--. 1 root root 0 12月 21 08:21 /root/hch123.txt
-rw-r--r--. 2 root root 0 12月 23 08:57 /root/1_heard.txt.bak
Linux文件后綴名
在linux系統(tǒng)中方椎,文件的后綴名并沒有具體意義钧嘶,也就是說,你加或者不加有决,都無所謂。但是為了容易區(qū)分新荤,我們習慣給文件加一個后綴名台汇,這樣當用戶看到這個文件名時就會很快想到它到底是一個什么文件苟呐。例如1.sh, 2.tar.gz, my.cnf, test.zip等等痒芝,如果你首次接觸這些文件牵素,你也許會感到很暈,沒有關系瞳步,隨著學習的深入单起,你就會逐漸的了解這些文件了。阿銘所列舉的幾個文件名中1.sh代表它是一個shell script 嘀倒,2.tar.gz 代表它是一個壓縮包,my.cnf 代表它是一個配置文件灌危,test.zip 代表它是一個壓縮文件碳胳。
另外需要你還需知道的是挨约,早期Unix系統(tǒng)文件名最多允許14個字符,而新的Unix或者linux系統(tǒng)中诫惭,文件名最長可以到達 256 個字符!