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