powershell 使用以下Regex删除特定文件名:

ryevplcw  于 2023-04-21  发布在  Shell
关注(0)|答案(1)|浏览(151)

试图通过追索权来删除目录中的某些文件。然而,似乎它所做的只是输出什么也没有,什么也没有被删除。请看看我做的是错的。

Get-ChildItem $Path -Recurse | Where{$_.Name -Match "^[0-9]{1,6}$"} | Remove-Item

下面的文件我试图删除匹配:000001.tif 000002.tif等。我试图看看这是否是管道之间的间距问题,但没有去。现在我试图看看这是否是我的PC上的权限问题,但它不是。
我希望正则表达式删除匹配该正则表达式的文件(6位数,都有数字)。我做错了什么吗?
更新:感谢各位的帮助,但我打了另一个打嗝比我想象的更多。
运行代码:

Get-ChildItem $Path -recurse| Where{$_.BaseName -Match "^[0-9]{1,6}$"} | Remove-Item -whatif

在有子文件夹的目录中,正在删除子文件夹和与之匹配的文件。我只想删除该文件。我尝试了以下操作:

Get-ChildItem $Path -File -recurse| Where{$_.BaseName -Match "^[0-9]{1,6}$"} | Remove-Item -whatif

但是Whatif的结果是空的,这有什么错误呢?

cotxawn7

cotxawn71#

这是它的通配符模式。它作为路径而不是过滤器工作。

get-childitem -recurse -path [0-9][0-9][0-9][0-9][0-9][0-9].tif |
  remove-item -whatif

或者

Get-ChildItem $Path -Recurse | where basename -match '^[0-9]{1,6}$' |
  Remove-Item -whatif

相关问题