find和grep的使用

1、find
語法格式:find  [path]  [options]  [tests]  [actions]

[path]是路徑,可以是絕對路徑、相對路徑,或者多個路徑。
[options]下面列出一些主要選項:



[tests]

  -size n[cwbkMG]
        File uses n units of space. The following suffixes can be used:
        `b' for 512-byte blocks (this is the default if no suffix is
            used)
        `c' for bytes
        `w' for two-byte words
        `k' for Kilobytes (units of 1024 bytes)
        `M' for Megabytes (units of 1048576 bytes)
        `G' for Gigabytes (units of 1073741824 bytes)

還可以使用操作符來組合這些測試項。

可以使用括號來強制測試和操作符的優先級,但是要注意使用使用反斜槓"\"來引用括號,以確保括號沒有被shell擴展。如果文件名使用通配符,要用雙引號引起來,以確保直接傳遞給find命令。
假設/home/qyh/temp下有如下文件:

如果要在當前路徑下找到比phone新的文件夾,或者以N開頭的文件,那麼可以使用如下命令:
find  ./  \(  \( -newer  ./phone  -a  -type  d \) -o -name "N*"  \)  -print
如果正確執行的話,會輸出
./hah
./NetSetting
驗證一下:
經過測試和驗證,發現在括號的左右兩側必須留一個空格,才能正常識別指令。
[actions]

{}是-exec和-ok的一個特殊參數,代表當前完整路徑。
-ls會打印出find找到的文件的詳細參數。

find命令還有很多相關參數,可用命令man find查看。

2、grep
    grep是General Regular Expression Parser的簡稱,即通用正則表達式解析器。一般是使用find來查找文件,用grep來查找字符串。
可以將grep作爲傳遞給-exec的一條命令。
語法格式:grep  [options]  PATTERN [FILES]
如果沒有提供文件名,grep命令將搜索標準輸入。
[options]

    -n                     順便輸出行號
    -R,-r                  到下級目錄,遞歸的查找
假設有這樣一個文件:

那麼,用grep命令來做幾個測試:

正則表達式
(1)、特殊字符
如果要將特殊字符用做普通字符的話,必須加反斜槓"\"。

(2)、匹配模式


(3)、如果使用了擴展匹配-E選項,那麼下面的字符要加上反斜槓。

例子:
找到以";"結尾的行

找到以ha開頭而且是4個字母的單詞的行

找到字符串尾部有6個小寫字母的字符串的行(如下所示,\{6\}周圍不能有空格)

grep命令還有很多相關參數,可用命令man grep查看。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章