3-4:常见任务和主要工具之文件搜索
文章目錄
- 前言
- 一:locate-最簡單的查找文件的方式
- 二:find-搜索神器
- (1)test選項(xiàng)
- A:基本使用
- B:操作符
- (2)action選項(xiàng)
- A:預(yù)定義動作
- B:用戶自定義操作
- C:xargs
- (3)option選項(xiàng)
前言
我們知道Linux操作系統(tǒng)的文件組織結(jié)構(gòu)管理的非常好,但是隨之而來的一個很大的問題就是——文件太多了,一多就容易出亂子。而多最大的帶給我們最大的困擾就是如何找到我們想要的文件? 所以本章的主要內(nèi)容,就是如何搜索文件
本章的主要命令如下:
- locate:通過文件名查找文件
- find:查找文件(配合參數(shù)功能極其強(qiáng)大)
- xargs:從標(biāo)準(zhǔn)輸入中簡歷,執(zhí)行命令行
- touch:更改文件的日期時間(經(jīng)常用來創(chuàng)建文件)
- stat:顯示文件或文件系統(tǒng)的狀態(tài)
一:locate-最簡單的查找文件的方式
locate命令可以通過快速搜索數(shù)據(jù)庫,以尋找路徑名與給定字符串匹配的文件,同時輸出所有的匹配結(jié)果
比如要查找以zip字符串開頭的程序
loacte當(dāng)然可以和其他命令結(jié)合使用,比如說grep。如下全盤搜索zip,但是只是bin/目錄下的就可以這樣做
- 需要注意的是使用locate命令查找到的內(nèi)容可能不是最新的,如果需要最新的,需要切換為超級用戶,然后手動運(yùn)行updatedb程序,再查找
二:find-搜索神器
find命令可以說是Linux非常值得我們反復(fù)推敲的一個命令了,因?yàn)樗娴奶玊M強(qiáng)大了
find最簡單的用法就是,在find后面跟上路徑名,它就會列出或者說搜索出給定路徑下的所有文件
(1)test選項(xiàng)
A:基本使用
簡單點(diǎn)說就是,find可以根據(jù)屬性進(jìn)行搜索
比如說我要搜索用戶目錄下所有的普通文件,就輸入find ~ -type f
- find支持的文件類型如下
比如說我要搜索用戶目錄下所有的超過1M的普通文件,就輸入find ~ -type f -size +1M
- 如果有“+”表示大于目標(biāo)值,如果是“-”表示小于目標(biāo)值,如果沒有則表示等于目標(biāo)值
比如說我要搜索用戶目下的所有圖片文件(以.jpg結(jié)尾),就輸入find ~ -name "*.jpg"
當(dāng)然除了以上依據(jù)名字,大小查詢,find支持以下參數(shù)(部分)進(jìn)行查詢,需要注意的是上面的“+”和“-”使用于任何的數(shù)值情況
B:操作符
簡單點(diǎn)說,操作符可以使我們的參數(shù)有邏輯關(guān)系
舉個例子,下面的文件夾里有三個普通文件和三個目錄,其中test1這個普通文件的權(quán)限是600,其余不是;dir1這個目錄的權(quán)限是700,其余不是
我的要求就是找到所有權(quán)限不是600的普通文件和所有權(quán)限不是700的目錄,該怎么辦?這個時候就要用到操作符了。
大家可以發(fā)現(xiàn)上述查詢有一定的邏輯關(guān)系,而操作符就是用來描述這種邏輯關(guān)系的,我先把查找命令寫出來,大家不要覺得驚奇,聽我慢慢分析
find . \( -type f -not perm 0600 \) -or \( -type d -not -perm 0700 \)
首先我得解釋一下上面出現(xiàn)的-or,-not,其實(shí)它就是C語言的&& || !
結(jié)合上述表,你可以把上面的命令簡化為(expression1) -or (expression2)
- 這里是稍微暫停一下,很多人會覺得上面的兩個表達(dá)式的關(guān)系應(yīng)該and才對,但是大家要想一下這樣查詢的含義豈不是要查既是普通文件又是目錄的文件嗎?這樣的關(guān)系顯然錯誤
接著每個表達(dá)式內(nèi),我們用的是-not,是因?yàn)槲覀円檎业奈募臋?quán)限不是0600,目錄不是0700,也就是可以寫作-type f -and -not -perms 0600和-type d -and -not -perms 0700
最后一點(diǎn)是括號前面的反斜杠,那是因?yàn)槔ㄌ栐趕hell具有特殊含義,必須使用轉(zhuǎn)義字符
最后還有一點(diǎn)要給大家說清楚,其實(shí)這一點(diǎn)和C語言有關(guān),因?yàn)樵贑語言中我們稱之為邏輯運(yùn)算符的短路特性
在任何情況下,表達(dá)式1都會被執(zhí)行,而中間的操作符直接決定了表達(dá)式2是否會執(zhí)行
- 這一點(diǎn)額外額外重要,這個性質(zhì)直接影響了actions參數(shù)
(2)action選項(xiàng)
find強(qiáng)大的原因不止在于它可以查找,而且在于它可查找后進(jìn)行操作
A:預(yù)定義動作
比如要刪除當(dāng)前目錄下,所有以test開頭的文件
還記得上面的短路特性嗎?需要注意的是每個test選項(xiàng)和action選項(xiàng)之間的邏輯關(guān)系默認(rèn)是and,也就是上圖中的命令實(shí)際可以寫作:find . -name " test*" -and -print -and -delete。
B:用戶自定義操作
這個略過,感覺這個課本上的這個操作有點(diǎn)雞肋,可以用下面的xargs
C:xargs
xargs處理標(biāo)準(zhǔn)輸入信息并將其轉(zhuǎn)變?yōu)槟持付畹妮斎雲(yún)?shù)列表 ,簡單點(diǎn)說就是xargs后面的命令會執(zhí)行前面的輸出結(jié)果
如下有5個test文件,找出來之后列出信息
(3)option選項(xiàng)
option選項(xiàng)用于控制find的搜索范圍
總結(jié)
以上是生活随笔為你收集整理的3-4:常见任务和主要工具之文件搜索的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nlog配置文件
- 下一篇: (王道408考研数据结构)第八章排序-第