我正在尝试使用cmdlet Rename-Item
来更改文件夹中多个文件的文件名。
这是我的文件的一个示例(现实中有更多文件):
1_File1.sql
1_File2.sql
1_File3.sql
2_File4.sql
3_File5_NOT_DONE.sql
3_File6_NOT_DONE.sql
3_File7_NOT_DONE.sql
3_File8_NOT_DONE.sql
4_File9_NOT_DONE.sql
5_File10_NOT_DONE.sql
6_File11.sql
6_File12.sql
我不想做的是从这些文件中删除 _NOT_DONE 部分:
3_File5_NOT_DONE.sql
3_File6_NOT_DONE.sql
3_File7_NOT_DONE.sql
3_File8_NOT_DONE.sql
例如以 3_File
开头的文件完成后,我将不会显示完整的列表:
1_File1.sql
1_File2.sql
1_File3.sql
2_File4.sql
3_File5.sql
3_File6.sql
3_File7.sql
3_File8.sql
4_File9_NOT_DONE.sql
5_File10_NOT_DONE.sql
6_File11.sql
6_File12.sql
我尝试在powershell中使用它,它会获取所有文件,但是它迫使我将新名称设置为静态名称(请参阅-Replace
的最后一部分):
Get-ChildItem *.sql | Rename-Item -NewName {$_.name -Replace '3_File.*_NOT_DONE\.sql$', '<static filename>.sql'}
我也想在-Replace
的最后一部分中使用正则表达式。也许还有另一种方法可以使新名称保留其原始名称的一部分?
答案 0 :(得分:3)
也许这会帮助您:
Get-ChildItem 3_*.sql | Rename-Item -NewName {$_.Name -replace "_NOT_DONE", ""}
之前:“ 3_File8_NOT_DONE.sql
之后:“ 3_File8.sql”
答案 1 :(得分:2)
要获得所需的列表,可以使用此解决方案
[root@x ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/openshift/origin-node v3.11.0 14d965ab72d5 4 days ago 1.17 GB
请注意,您将筛选Get-ChildItem,以便仅当文件以“ 3”开头并以“ .sql”结尾时,文件才被重命名。 @Lndngr提供的解决方案将从所有文件中删除“ _NOT_DONE”。