在 Windows 命令行中删除具有某些扩展名的文件很容易:
del *.jpg
我需要一个命令来删除所有不以此开头的文件,如下所示:
del !foo*.jpg
答案1
Delete 命令没有这种灵活性,但你可以在 Powershell 中使用 Remove-Item
C:\PS>remove-item * -include *.dll -exclude *cal*
描述:
此命令从当前目录中删除所有文件扩展名为 .dll 且名称不包含“cal”的文件。它使用通配符 (*) 指定当前目录的内容。它使用 Include 和 Exclude 参数指定要删除的文件。
答案2
此 powershell 脚本将递归删除 macOS 创建的以 ._ 开头的小备份文件
$curDir = Split-Path -Parent $MyInvocation.MyCommand.Path
foreach ($file in Get-ChildItem -force $curDir -Recurse)
{
if (($file.Extension -match '.DS_Store') -or ($file -like '._*'))
{
Remove-Item $file.FullName -Force | Out-Null
}
}
答案3
事实证明,使用数学,您可以使用正则表达式,如下所示:
$curDir = Split-Path -Parent $MyInvocation.MyCommand.Path
foreach ($file in Get-ChildItem -force $curDir -Recurse) {
if ($file -match '^(?!foo).*?\.jpg') {
Remove-Item $file.FullName -Force | Out-Null
}
}
该运算符-match
适用于正则表达式模式。检查文档获取更多匹配运算符。