📜  powershell 重命名通配符 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:18:41.152000             🧑  作者: Mango

PowerShell 重命名通配符 - Shell-Bash

在 PowerShell 中,我们可以使用通配符来匹配文件名和文件路径,然后利用 PowerShell 的重命名命令来对它们进行重命名。本文将介绍在 PowerShell 中使用通配符进行文件重命名的方法。

匹配文件名和路径

在 PowerShell 中,我们可以使用以下通配符进行文件名和路径的匹配:

  • * 匹配任何多个字符(包括零个字符)
  • ? 匹配任何单个字符
  • [] 匹配任何列在方括号中的字符
  • [-] 匹配任何在方括号中指定的范围内的字符

例如,假设我们有一个文件夹,其中包含以下文件:

file_01.txt
file_02.txt
file_03.txt
file_04.txt
file_05.txt

我们可以使用 * 匹配任何多个字符的文件名:

Get-ChildItem -Path "C:\example\" -Filter "file_*.txt" | Select-Object -ExpandProperty FullName

输出结果为:

C:\example\file_01.txt
C:\example\file_02.txt
C:\example\file_03.txt
C:\example\file_04.txt
C:\example\file_05.txt
使用通配符进行文件重命名

一旦我们匹配了要重命名的文件名和路径,我们可以使用 PowerShell 的 Rename-Item 命令来对它们进行重命名。例如,我们可以将上面的文件名中的 _ 替换为 -

Get-ChildItem -Path "C:\example\" -Filter "file_*.txt" | ForEach-Object {Rename-Item $_.FullName -NewName ($_.Name -replace '_', '-') -WhatIf}

注意到最后使用 -WhatIf 参数进行测试并查看将要重命名的文件名,输出结果为:

What if: Performing the operation "Rename File" on target "C:\example\file_01.txt" to "C:\example\file-01.txt".
What if: Performing the operation "Rename File" on target "C:\example\file_02.txt" to "C:\example\file-02.txt".
What if: Performing the operation "Rename File" on target "C:\example\file_03.txt" to "C:\example\file-03.txt".
What if: Performing the operation "Rename File" on target "C:\example\file_04.txt" to "C:\example\file-04.txt".
What if: Performing the operation "Rename File" on target "C:\example\file_05.txt" to "C:\example\file-05.txt".

去掉 -WhatIf 参数即可实际进行文件重命名。

总结

在 PowerShell 中使用通配符进行文件重命名可以节省时间且不易出错。我们可以使用 *?[][-] 这些通配符来匹配文件名和路径,然后使用 Rename-Item 命令进行重命名。