我在这种命名约定的目录中有大量文件:“1050_14447_Letter Extension.pdf”等。我需要删除第二个下划线之前的所有字符(包括第二个下划线)。所以新的文件名是“Letter Extension.pdf”。如何相应地重复单个目录重命名?
答案 0 :(得分:6)
以下是重命名当前目录中所有pdf文件的示例,从文件名中删除所有前导数字或下划线:
Get-ChildItem -Filter *.pdf | Rename-Item -NewName {$_.Name -replace '^[0-9_]+'}
答案 1 :(得分:1)
这是另一种不依赖于正则表达式但在文件路径中没有下划线的方法:
Get-ChildItem 'C:\path2files' | %{
Rename-Item $_.fullname $_.Name.Split("_")[2]
}
答案 2 :(得分:0)
给出像“1050_14447_Letter Extension.pdf”这样的字符串,这是一种方法:
$foo = "1050_14447_Letter Extension.pdf"
$foo -replace '^.*_.*_(.*)$', '$1'
答案 3 :(得分:0)
这将处理文件名中的任意数量的下划线(忽略路径),并在生成新名称时跳过所有内容,包括最后一个下划线: -
Get-ChildItem 'C:\somedir' -Filter *.pdf |`
%{Rename-Item $_.Fullname ($_.Name.Split("_")|`
select -last 1)}
您可以使用rename-item命令上的-whatif开关进行测试,例如
gci 'R:\TECH' -Filter *.pdf|`
%{rename-item -whatif $_.Fullname ($_.Name.Split("_")|`
select -last 1)}
返回:
如果:在Target上执行“重命名文件”操作“Item:R:\ TECH \ 38415_JOBS121121155535240.pdf Destin ation:R:\ TECH \ JOBS121121155535240.pdf“。 如果:在目标“项目:R:\ TECH \ CHG38415_JOB_121112153717550.pdf Des上执行”重命名文件“操作 tination:R:\ TECH \ 121112153717550.pdf“。 如果:在Target上执行操作“重命名文件”项目:R:\ TECH \ CHG38415_PREH_121113152548740.pdf De stination:R:\ TECH \ 121113152548740.pdf“。 如果:在Target上执行操作“重命名文件”项目:R:\ TECH \ CHG38415_PREI_121113152600640.pdf De stination:R:\ TECH \ 121113152600640.pdf“。 如果:在Target上执行操作“重命名文件”项目:R:\ TECH \ MCPTEST121125121201390.pdf Destinati on:R:\ TECH \ MCPTEST121125121201390.pdf“。 如果:在Target上执行操作“重命名文件”项目:R:\ TECH \ PREHAND_38415_121121154127000.pdf De stination:R:\ TECH \ 121121154127000.pdf“。 如果:在目标“项目:R:\ TECH \ PREIMP_38415_121121154140630.pdf Des上执行”重命名文件“操作 tination:R:\ TECH \ 121121154140630.pdf“。
答案 4 :(得分:0)
以下是使用StringSolver自动工具的另一种方法。安装后,mv
命令会使用半自动决策程序进行扩充。
您首先要执行以下操作:
mv "1050_14447_Letter Extension.pdf" "Letter Extension.pdf"
然后你会问什么是广义转换:
mv --explain
它会告诉你像``
这样的东西从第一个用'分隔的单词开始连接文件名及其扩展名。'
这还不是你想要的。你需要的是给出另一个例子,例如:
mv --explain "25771_144_ 17Your file_name.pdf" " 17Your file_name.pdf"
在第二个' _'之后开始的文件名+常量字符串'。' +扩展名
现在你可以这样做:
mv
它将执行转型。
免责声明:我是这项工作的合着者,用于学术目的。其他示例可在youtube上找到。