正则表达式在批量文件重命名中不起作用
Regular Expressions Aren't Working in Bulk File Renaming
我在使用正则表达式时遗漏了一些东西,因为当我替换定义的字符串时我的行有效。我尝试了 \d
和 [0-9]
。我忘记了什么?
原版FOOBAR_12345678-0001.csv
目标12345678.csv
get-childitem *.csv | foreach { rename-item $_ $_.Name.Replace("FOOBAR_(\d{8})-\d{4}", "") }
以下对我有用:
get-childitem *.csv | foreach { rename-item $_ ( $_.Name -replace 'FOOBAR_(\d{8})-\d{4}', '') }
为什么:
- 我怀疑您使用的 .Replace() 方法不采用正则表达式。
- 我不是 100% 确定它是必要的,但我已经习惯使用单引号和 powershell 正则表达式,以防出现任何 shell 扩展恶作剧。
我在使用正则表达式时遗漏了一些东西,因为当我替换定义的字符串时我的行有效。我尝试了 \d
和 [0-9]
。我忘记了什么?
原版FOOBAR_12345678-0001.csv
目标12345678.csv
get-childitem *.csv | foreach { rename-item $_ $_.Name.Replace("FOOBAR_(\d{8})-\d{4}", "") }
以下对我有用:
get-childitem *.csv | foreach { rename-item $_ ( $_.Name -replace 'FOOBAR_(\d{8})-\d{4}', '') }
为什么:
- 我怀疑您使用的 .Replace() 方法不采用正则表达式。
- 我不是 100% 确定它是必要的,但我已经习惯使用单引号和 powershell 正则表达式,以防出现任何 shell 扩展恶作剧。