find命令 &&文件后缀名
查找命令例如 whereis locate 都有一定的局限性
whereis ls
locate
1.安裝locate (和where is很像)
首先要形成db文件才能搜索,凌晨4點更新一次
Linux find命令
find命令是用來在給定的目錄下查找符合給定條件的文件
find [OPTIONS] [查找起始路徑] [查找條件] [處理動作]
一、OPTIONS參數(shù)
-P、-L、-H:控制軟連接的對待方式,用的不多。不介紹了
二、查找路徑
就是個目錄路徑,相對和絕對都可以。
三、查找條件
(一)、根據(jù)名稱查找
-name "PATERN"
-iname "PATERN" :不區(qū)分名稱字母大小寫
-regex PATTERN:基于正則表達式的模式查找,匹配的是整個路徑,而非單個文件名。
(二)、根據(jù)文件從屬關系查找:
-user USERNAME:查找屬主指定用戶的所有文件;
-group GRPNAME:查找屬組指定組的所有文件;
-uid UID:查找屬主指定的UID的所有文件;
-gid GID:查找屬組指定的GID的所有文件;
-nouser:查找沒有屬主的文件;
-nogroup:查找沒有屬組的文件;
(三)、根據(jù)文件的類型查找:
-type:根據(jù)不同的文件類型篩選
(四)、根據(jù)文件的大小查找:
-size [+|-]#UNIT
常用單位:k, M, G
1、1k時:a3只有15個字節(jié),也被算做1k也查詢,即條件符合大于0k ( #-1 ),小于等于1k (#)
2、+1k時:a和a1滿足大于1k(#)的條件
3、-62k時:只有a3滿足大于等于0,小于等于 61k(#-1)的要求。
(五)、 根據(jù)時間戳查找:
按照atime(文件的最后訪問時間)、mtime(文件的最后修改時間)、ctime(文件最后改變時間)三個變量來查詢:
那么在linux中是怎樣的,我們在linux中新建一個文件,然后用stat命令查看文件信息,如下圖:
可以從上圖看到系統(tǒng)為我們保存了這個的三個時間,分別是Access time、Modify time、Change time,也就是訪問時間、修改時間和狀態(tài)時間。
那么與前面所說的windows下做一個對比:
在windows下,一個文件有:創(chuàng)建時間、修改時間、訪問時間。
而在Linux下,一個文件也有三種時間,分別是:訪問時間、修改時間、狀態(tài)時間
注意ctime和文件的權限相關,一般情況下mtime時間更新,ctime會跟著自動更新
以“分鐘”為單位:
-amin
-mmin
-cmin
-daystart:時間條件的開始先決條件。如果沒有的時候,比較的開始時間為當前時間。如果有此參數(shù),則比較的開始時間為當天的23:59:59。
查詢出來的各個文件名稱對應時間如下:
(六)、根據(jù)權限查找
-perm
-perm [/|-]mode
mode:精確權限匹配;
/mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件即滿足;9位權限之間存在“或”關系;
-mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足。9位權限之間存在“與”關系;
(1):精確查找。就是匹配權限值完全相等的;
(2):/mode。 只要有一組用戶匹配到一個權限即可。
通俗說:就是屬主擁有給定屬主權限的某一個,或者數(shù)組擁有給定權限的某一個,或者其他用戶擁有給定權限的某一個即可。
表示屬主擁有執(zhí)行權限
或者數(shù)組擁有寫權限,
或者其他用戶擁有寫權限
(3):-mode。并且的關系。
通俗說:就是給定的屬主權限必須擁有。并且給定的數(shù)組權限必須擁有。并且給定的其他用戶權限必須擁有。
表示屬主擁有執(zhí)行權限
并且數(shù)組擁有寫權限,
并且其他用戶擁有寫權限
處理動作:
-print:輸出至標準輸出;默認的動作;
-ls:類似于對查找到的文件執(zhí)行“l(fā)s -l”命令,輸出文件的詳細信息;
-delete:刪除查找到的文件;
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定文件中;
-ok COMMAND {} ; :對查找到的每個文件執(zhí)行由COMMAND表示的命令;每次操作都由用戶進行確認;
-exec COMMAND {} ; :對查找到的每個文件執(zhí)行由COMMAND表示的命令;
注意:find傳遞查找到的文件路徑至后面的命令時,是先查找出所有符合條件的文件路徑,并一次性傳遞給后面的命令;
但是有些命令不能接受過長的參數(shù),此時命令執(zhí)行會失敗;另一種方式可規(guī)避此問題:
find | xargs COMMAND
查找/etc 下 一天之內(nèi)發(fā)生修改的文件:
find /etc/ -type f -mtime -1
查找/etc 下 一天以前發(fā)生修改的文件:
類似的atime ctime也可以一樣使用
查找綜合滿足兩個條件的文件 (并)
或:用的很少
find 中不太常用 但是又很實用的技巧
通過iNode號查找文件的硬鏈接 -inum +號
尋找1個小時內(nèi)修改的文件: -mmin -60
exec小實驗:
找尋150分鐘之內(nèi)根目錄下修改過的文件并修改期文件名 加上 .bak
-exec mv {} {}.bak ;
注釋:{}表示find根據(jù)指令要求找到的文件名 脫譯
找到/root/ 目錄下大于10k的文件并把它ls出來
注釋:單位 k小寫 M 只能大寫 小寫會報錯 不加單位或者b都不可以
文件名后綴:
基本上,Linux的文件是沒有所謂的“拓展名”的,我們剛剛就談過,一個Linux文件能不能被執(zhí)行,與x有關,與文件名根本一點關系也沒有。這個觀念跟Windows 的情況不相同!在Windows 底下,能被執(zhí)行的檔案擴展名通常是 .com .exe .bat 等,而在Linux底下,只要你的權限當中具有 x的話,例如[ -rwx-r-xr-x ] 即代表這個文件可以被執(zhí)行!
但是能執(zhí)行與能執(zhí)行成功是不同的。雖然擴展名不起作用但是我們還是希望可以由擴展名了解此文件是什么東西。所以。。。
.sh : 腳本或者批處理文件(scripts)
.Z .tar .tar.gz .zip .tgz : 經(jīng)過打包的壓縮文件。
.html .php :網(wǎng)頁相關文件。
小知識:linux中which和whereis的區(qū)別
which命令是查找某個命令的完整路徑,也就是說它是用來查找可執(zhí)行文件的,which命令的原理是在當前登錄用戶的PATH環(huán)境變量記錄的路徑中進行查找。which命令使用例子:
which passwd(查找passwd命令的二進制文件路徑)
而whereis命令則是用來快速查找任何文件,注意是任何文件,所以是一個文件搜索命令,它和另一個文件搜索命令locate的功能是一樣的。比如如果輸入:whereis passwd,那么找到的結果就比which命令找到的內(nèi)容多,因為which命令只會列出二進制文件路徑,而whereis命令會把所有帶有passwd字樣的文件路徑都列舉出來。
總結
以上是生活随笔為你收集整理的find命令 &&文件后缀名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nsi脚本中执行.bat文件要隐藏dos
- 下一篇: ILP32、ILP64、LP64、LLP