检查文件名(字符串)是否以数字或符号开头

时间:2016-06-30 18:29:36

标签: powershell

我有大量的文件(.mp3),我正试图找到重复的文件。

我现在遇到的问题是文件名如下所示:

number

我需要做的是:

Singer - Song
_1_Singer_-_Song_
001-Singer-Song

然后(希望)上面的文件名应如下所示:

If the name starts with a number (123456789) or a symbol (?=/&%¤#"!_.-).
Then delete all numbers/symbols until there is an alphabetic character.

这是我到目前为止所做的,但我只需要替换名称的第一个字符。它们可以在0-10个字符之间变化,因此我需要检查每个文件中需要替换的字符数。

Singer - Song
Singer_-_Song_
Singer-Song

由于

1 个答案:

答案 0 :(得分:0)

正则表达式

通过一些正则表达式可以更容易。替换所有非字母的前导字符

$name | Rename-Item -NewName {$name.Name -replace "^[^a-z]*"}
  • ^在行的开头断言位置
  • [^a-z]*匹配下面列表中不存在的单个字符

    量词:*在零和无限次之间,尽可能多次,根据需要回馈[贪婪]

    a-z a和z之间范围内的单个字符。 -replace默认情况下不区分大小写。

字符串方法

正则表达式不是唯一的答案。看来你有一个定义的字符列表,一开始就不应该存在。字符串方法.TrimStart()也可以。

$name | Rename-Item -NewName {($name.Name).TrimStart("0123456789?=/&%¤#`"!_.-")}

我添加了0以便它适合您的测试用例。