删除所有以特定模式开头的文件 - Windows 命令行

删除所有以特定模式开头的文件 - Windows 命令行

在 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适用于正则表达式模式。检查文档获取更多匹配运算符。

相关内容