在PowerShell中,無(wú)法像*nix中一樣使用grep命令,直接對(duì)一個(gè)目錄下的所有文件進(jìn)行內(nèi)容查找,下面的PS腳本針對(duì)目錄和文件進(jìn)行了區(qū)分,借用Select-String命令,實(shí)現(xiàn)了內(nèi)容查找,并顯示查找到的文件和匹配內(nèi)容所在行號(hào)。
使用的時(shí)候,只需要在shell中,輸入:
"命令所在目錄"\grep.ps1
"需要查找的字符串" "需要查找的路徑"
param($str, $path=".\") #輸入?yún)?shù),默認(rèn)在當(dāng)前目錄及其子目錄下查找
if([String]::IsNullOrEmpty($str)){
Write-Output "Caution: input string is empty"
exit
}
$path = Resolve-Path $path #獲取絕對(duì)路徑
if([System.IO.Directory]::Exists($path)){
$subPathList = Get-ChildItem $path -Recurse *.* #獲取所有子目錄
foreach($subPath in $subPathList){
$subPath = $subPath.FullName
if([System.IO.Directory]::Exists($subPath)){
Continue
}
$foundArr = Select-String -path $subPath -Pattern $str
foreach($found in $foundArr)
{
if($found -match "(.+:\d+):") #刪除行號(hào)后面的內(nèi)容
{
Write-Output $matches[1]
}
}
}
}elseif([system.IO.File]::Exists($path)){
$foundArr = Select-String -path $path -Pattern $str
foreach($found in $foundArr)
{
if($found -match "(.+:\d+):")
{
Write-Output $matches[1]
}
}
}
總結(jié)
以上所述是小編給大家介紹的PowerShell實(shí)現(xiàn)簡(jiǎn)單的grep功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- PowerShell 指令操作集合(小結(jié))
- 如何利用PowerShell監(jiān)控Win-Server性能詳解
- PowerShell中Job相關(guān)命令及并行執(zhí)行任務(wù)詳解
- 基于PowerShell在Ubuntu系統(tǒng)的使用詳解
- PowerShell 遠(yuǎn)程執(zhí)行任務(wù)的方法步驟
- 使用 powershell 創(chuàng)建虛擬機(jī)
- 通過DNS TXT記錄執(zhí)行powershell
- PowerShell 語(yǔ)音計(jì)算器實(shí)現(xiàn)代碼
- PowerShell腳本 隨機(jī)密碼生成器(ps隨機(jī)密碼生成器)
- 原創(chuàng)powershell腳本小工具ctracert.ps1跟蹤路由(win8以上系統(tǒng))
- powershell玩轉(zhuǎn)SQL SERVER所有版本的方法
- powershell玩轉(zhuǎn)sqlite數(shù)據(jù)庫(kù)詳細(xì)介紹
- PowerShell基本使用教程