将所有偶数文件移动到不同的目录|Powershell和正则表达式

muk1a3rh  于 2023-01-26  发布在  Shell
关注(0)|答案(1)|浏览(138)

我试图将所有偶数文件从当前位置移动到目录“foo”,但是我在用正则表达式匹配它们时遇到了问题。
文件名的格式如下:11.txt、121.txt、342.txt文件
我目前使用的命令是:

Get-ChildItem | Where-Object {$_.Name -match '^[0-9]*[02468]$'} | Move-Item -Destination .\foo

我使用的前一个命令可以正常工作,但仅适用于两位数文件1.txt-99.txt

Get-ChildItem | Where-Object {$_.Name -match '^[0-9]+[02468]'} | Move-Item -Destination .\foo

我尝试在https://regex101.com/网站与.NET的味道,并检查了这个regex ^[0-9]*[02468]$和它的工作正常-匹配所有偶数,但由于某种原因,我有一个问题,上面提到的PS命令...

qxsslcnc

qxsslcnc1#

我以前用过的一个用于奇偶的替代方法是除法。圣地亚哥在评论中提供的解决方案也是这个问题的有效regex方法。

# Gets files and starts loop on files
Get-ChildItem "C:\Temp\AllFiles" -File | ForEach-Object {
    # If the BaseName of file is divisible by 2, else
    If($_.BaseName % 2 -eq 0) { 
        Move-Item -Destination "C:\Temp\Evens" -Path $_.FullName
    } Else { 
        Move-Item -Destination "C:\Temp\Odds" -Path $_.FullName
    }
}

相关问题