使用通配符進行文件的模糊查找正則表達式
Powershell 中的通配符能夠實現模糊查找, 也就是說能夠對一組項(而不是單個項)進行查找。例如,若是想查找 D:\MyPowerShell 目錄中全部擴展名爲 .ps1 的文件,能夠執行如下命令:
shell
PS C:\> Get-ChildItem D:\MyPowerShell\*.ps1 目錄: D:\MyPowerShell Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2016-5-26 21:52 1100 3testparamStart.ps1 -a--- 2016-5-26 22:22 2864 4testparamStart.ps1 -a--- 2016-5-27 20:55 4536 CommentbasedHelp.ps1 -a--- 2016-5-23 22:20 966 Diskinfo.ps1 -a--- 2016-5-27 21:26 678 errorAction.ps1 ...
在以上語句中,星號 (*) 用做通配符,用於指定 .ps1 文件擴展名以前能夠存在任意字符。由於命令中包含文件擴展名,因此該命令返回的全部文件都必須帶有該擴展名,但不限文件名。ide
除了星號通配符外,PowerShell 中還支持幾種其餘通配符。spa
通配符 | 說明 | 示例 |
匹配 | 不匹配 |
* | 與任意字符匹配 | a* | A、ag、Age | baba、cat |
? | 與指定位置中的一個字符嚴格匹配 | ?m | am、im | ccm |
[] | 與一組字符匹配 | [a-d]ge | age、bge | fge |
[] | 與指定的字符匹配 | [bc]ook | book、cook | aook |
Powershell 中的大多數 cmdlet 的某些參數都接受通配符。每一個 cmdlet 的幫助中都說明了哪些參數容許使用通配符,哪些能夠使用通配符。對於接受通配符的參數,它們的用法是不區分大小寫的。例如,?n 將返回 An、an、In、in、On、和 on。例如:進程
PS C:\> Get-Help Get-Process -Parameter Name -Name <string[]> 經過進程名稱指定一個或多個進程。能夠鍵入多個進程名稱(以逗號分隔)或使用通配符。參數名(「Name」)爲可選項。 是否必需? False 位置? 1 默認值 是否接受管道輸入? true (ByPropertyName) 是否接受通配符? True
從上面的語句參數說明中,可知 Get-Process 的-Name 參數能夠接受通配符,因此才能夠對進程名進行模糊查找。例如:
ci
PS C:\> Get-Process *shell Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 436 6 46828 37320 155 3.20 4116 powershell
通配符在單個參數能夠混合使用。例如,要查找 D:\MyPowerShell 目錄下因此以字母m到q開頭的.ps1 文件,則執行如下命令:字符串
PS C:\> Get-ChildItem D:\MyPowerShell\[m-q]*.ps1 目錄: D:\MyPowerShell Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2016-5-26 22:58 3172 Mandatory.ps1 -a--- 2016-5-31 22:13 780 manifest.ps1 -a--- 2016-5-30 22:26 4100 MyTools.ps1 -a--- 2016-5-26 23:18 3408 ParamCount.ps1 -a--- 2016-5-26 23:10 3368 ParamHelp.ps1 -a--- 2016-5-26 23:34 3672 ParamPattern.ps1 -a--- 2016-5-26 23:13 3468 ParamSet.ps1 -a--- 2016-5-27 20:44 404 PlacingHelp.ps1
以上命令中使用範圍通配符 ([m-q]) 來指定文件名應以字母 m 到 q 開頭,並以 .ps1 爲擴展名的全部文件。cmd
2. 使用通配符對關鍵字的模糊查找string
使用通配符能夠對指定的關鍵字進行模糊查找。例如想查找當前目錄(D:\MyPowerShell)中,包含指定關鍵字 "ERROR" 的全部文本文件(.txt),能夠執行如下語句:
it
PS D:\MyPowerShell> Select-String -Pattern ("ERROR") *.txt Help.txt:335: -ErrorAction, -ErrorVariable, -WarningAction, -WarningVariable, Help.txt:513: -ErrorAction, -ErrorVariable, -WarningAction, -WarningVariable,
查詢的結果的會顯示哪些文件包含指定的關鍵字,並出如今哪一行,以上例子中分別出如今335和513行。
字符串的模糊搜索和查找在分析log 文件時會很是有用。 而 Select-String 能夠使不用打開文件就文件中的關鍵字進行搜索,尤爲是當不肯定具體路徑是,使用該命令會很是方便。
總結
Powershell 中的通配符能夠實現文件以及指定關鍵字的模糊查找, 通配符只是正則表達式的一部分,因此也能夠使用正則表達式進行模式匹配以及模糊查找。