夺命雷公狗---linux NO:17 linux系统查找
which :?命令是查找命令是否存在,以及命令的存放位置在哪兒。
如果沒有查到他將返回no XXX in (查找過的路徑)....
?
這必須是可執行權限的文件,而且必須是存放在上面這些目錄中才可以用查找到的,上面的目錄是以:號進行分隔的。。。
但是如果查找成功他將返回查找到的路徑并且顯示出來。。。
?
?
whereis :?命令只能用于搜索程序名,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。
?
第一個框: usr/bin ?這里一般都是防止可執行文件的
第二個框: etc 下這李幼斌都是配置文件的
第三個框: ?這里一般都是放置手冊之類的。。
?
如果他是不存在的,那么他會返回如下形式的提示:
?
?
which ?和 ?whereis 的最大區別是 which 是在指定的地方查找有么有該執行文件,whereis ?他則會查找跟您這個名字相關的他都會列出來。
但是whereis ?和 ? locate 在查找的時候都是通過自己的一個DB數據庫來進行查找的,所以很有可能會很多東西都沒有找出來。。。。
?
?
?
locate :命令不是實時查找,所以查找的結果不精確,但查找速度很快。因為它查找的不是目錄,而是一個數據庫(/var/lib/locatedb),這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,并且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。
有可能linux ?上沒安裝,那么首先安裝一下即可:
?
然后再安裝一個 *locate
?
然后再用命令 ?updatedb ? 更新下即可。。
完成后在用locate 搜索下passwd 做實驗。。
這里有點類似模擬查詢的樣子,所以我們來做一個重點向輸出,讓他看起來更美觀一點,如下所示:
?
然后用vim ?對她進行查看
進入的時候是看不到左側的數字的,我們需要先按一個 ? ESC ?鍵, 然后再輸入 ?:set nu 回車即可看到左側的行號信息了。。。
其實locate 更多的是是像模糊查詢。。。。。。
locate和whereis 都是有自己的db庫的。。
?
小結:
which--------查找到的是一些可執行的程序
whereis------查到到的都是程序相關的配置文件和幫助信息
locate-------按照匹配度查找,更多的都是模糊信息,比如名字只記得一點點
?
?
?
find:是最常用和最強大的查找命令。它能做到實時查找,精確查找,但速度慢。
由于他和 ? windows ? 下的查找差不多,都是在交換分區里面進行仔細查找的,所以速度方面可能會比較慢,,所以不是很推薦使用他。
如果直接輸入find 那么他顯示的內容將是很全面的,包括隱藏的內容他都會顯示出來,效果如下所示:
?
所以說在在不用任何關鍵字的前提下他就表示所有的。。。
find的常用場景如下所示:
?
-atime:表示某個文件我在打開(讀取)他的時間。。。
-ctime:狀態時間,如權限修改,內容更改,寫之類的都是屬于狀態時間
-mtime:修改時間,如文件名稱修改,文件內容修改他的時間都會發生變化的
?
使用方法1:
這里的 ?0 ?表示查看24小時內改動過的文件。。。
如果這里的 ?0 ?改成 ? ?5 ?那么他顯示的是前5天我修改過的文件。。
0 是24小時內 ?5 ?是前 ?5 ?天(當天)修改過的內容如此類推。。。
如果我想查看30天之前的:
看到這類似報錯的,其實也不用還怕,因為這臺linux的服務器我是用來做測試的,他也就是剛搭建起來沒多久的。。。。
如果改成 find / mtime +5 ? 那也是行的,代表5天前操作過的文件,5天前至到所有的。。。。。。。。
如果改成 find / mtime -5 ? 那也是行的,代表是5天以內發生操作的所有文件。。。
如果沒有 ?+ ? ?和 ? - ? 那么只是一天時間內發生的而已。。。
?atime ?ctime ?mtime ?這三個的用法都是相同的。。。。
?
?
用法2:
查找用戶相關的文件
如果使用 ?find / -user 用戶名,這樣他會在全盤進行搜索的,如過服務器上數據比較多,不支持用這種方法進行搜索
find /home -user ?用戶名,如果使用著用的搜索,那就會快得多了,因為他只需要在一個目錄下搜索而已。。。。。
?
?
find / -nouser:這是查找有沒有一個文件不屬于任何用戶和不屬于任何用戶組的。。。
?
這種方法一般都比較慢。。。
?
?
?
find / -group lisi :這是查找一個用戶組的。
查找一個用戶和查找一個用戶組其實很多時候都是沒什么區別的,因為用戶組和用戶的名稱是一樣的。。
正常情況下目錄帶task 和 ?fd ?開頭的都不用怎么關心,因為一般都是沒這個目錄的,更多時候說明系統在運行什么東西,但是他沒產生出信息出來。。。。
?
?
如果使用find / -name 文件名,根據文件名稱查找(嚴格區分大小寫,如果文件名中間有空格,則必須把文件名用雙引號引起來),用法如下所示:
當然如果不想讓他區分大小寫,那么只需要在name ?前加一個 ? i ? 即可,如 find / -iname 文件名
這個主要是查找全部關鍵字匹配的。。。
?
?
?
?
find /home -type f:這里是查找home目錄下的普通文件,這里的 ?f ? 是文件 ?file ? 的簡寫,用法如下所示:
?
?
?
find的特殊功能。。
比如要查找一個大于或者等于10M的文件
這些在linux里面用的還是比較少的。。。
?
?
如果忘記名字了還可以用*號來進行模糊查詢,如下所示:
?
?
還是那句話,如果能用 which 和 whereis 以及 locate ?能查到能發就盡量不要使用 ?find ?來查找,因為find ?要讀取硬盤,速度會比較慢。。。。。。。。。
轉載于:https://www.cnblogs.com/leigood/p/7087045.html
總結
以上是生活随笔為你收集整理的夺命雷公狗---linux NO:17 linux系统查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# Http方式下载文件到本地类改进版
- 下一篇: 【Storm】storm安装、配置、使用