Powershell - 搜索模式和复制
Powershell - Search for Pattern and Copy
我有一堆 *.CSV 文件。巨大的 *.CSV 文件。我尝试在这些名为“安全”的文件中搜索特定模式。如果找到,脚本会将其复制到文件夹中。
它可以工作,但是有一个我无法解决的问题。
在某些文件中,我要查找的单词不止一次出现。现在我的脚本搜索这个词,找到它并复制它。然后它再次在同一个文件中搜索,再次找到模式并再次复制。
但它应该在第一次找到单词后复制,然后在下一个 *.CSV 文件中搜索,而不是再次在同一个文件中搜索。
我尝试了很多东西“-SimpleMatch
”或“-First 1
”
目前的代码是:
Select-String -Path 'C:\Tools\Test\*\*.csv' -Pattern "Secure" | Select -first 1 | Copy-Item -Destination C:\Tools\Found -Verbose
有人可以帮我吗?
谢谢!
使用 Get-ChildItem
发现初始文件集,然后一次对一个文件使用 Select-String
。这样 Select -First 1
将在每个文件 中的第一个匹配项 之后 return,而不是在输出第一个文件后破坏整个管道:
Get-ChildItem -Path 'C:\Tools\Test\*\*.csv' |Where-Object { $_ |Select-String -Pattern "Secure" |Select -First 1 } |Copy-Item -Destination C:\Tools\Found -Verbose
我有一堆 *.CSV 文件。巨大的 *.CSV 文件。我尝试在这些名为“安全”的文件中搜索特定模式。如果找到,脚本会将其复制到文件夹中。
它可以工作,但是有一个我无法解决的问题。 在某些文件中,我要查找的单词不止一次出现。现在我的脚本搜索这个词,找到它并复制它。然后它再次在同一个文件中搜索,再次找到模式并再次复制。
但它应该在第一次找到单词后复制,然后在下一个 *.CSV 文件中搜索,而不是再次在同一个文件中搜索。
我尝试了很多东西“-SimpleMatch
”或“-First 1
”
目前的代码是:
Select-String -Path 'C:\Tools\Test\*\*.csv' -Pattern "Secure" | Select -first 1 | Copy-Item -Destination C:\Tools\Found -Verbose
有人可以帮我吗?
谢谢!
使用 Get-ChildItem
发现初始文件集,然后一次对一个文件使用 Select-String
。这样 Select -First 1
将在每个文件 中的第一个匹配项 之后 return,而不是在输出第一个文件后破坏整个管道:
Get-ChildItem -Path 'C:\Tools\Test\*\*.csv' |Where-Object { $_ |Select-String -Pattern "Secure" |Select -First 1 } |Copy-Item -Destination C:\Tools\Found -Verbose