批量重命名文件名以删除最后一个“-”后的部分,忽略扩展名

简单玩家

我想批量重命名某个文件夹中的文件-,并按照以下方式删除last之后的部分

  • hello world - Mr Sheephello world
  • super user - question on super user.docxsuper user.docx
  • abc - def - ghi jkl.pdfabc - def.pdf

我希望使用命令行解决方案,但其他选项也可以。

phuclv

如bash所示,要删除最后一个-用法${f% - *}${var%Pattern}将删除变量末尾的最短模式。有关更多信息,请阅读参数替换结果是这样的

for f in path/*
do
    if [[ $f = *.* ]]; then ext=".${f##*.}"; else ext=""; fi
    echo mv "$f" "${f% - *}$ext"
done

确认新文件名正确后,您可以删除该文件echo以进行真正的重命名。演示:

$ for f in "hello world - Mr Sheep" "super user - question on super user.docx" "abc - def - ghi jkl.pdf"; do if [[ $f = *.* ]]; then ext=".${f##*.}"; else ext=""; fi; echo mv "'$f'" "'${f% - *}$ext'";  done
mv 'hello world - Mr Sheep' 'hello world'
mv 'super user - question on super user.docx' 'super user.docx'
mv 'abc - def - ghi jkl.pdf' 'abc - def.pdf'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过CMake删除文件名(最短)扩展名(获取文件名删除最后一个扩展名)

根据原始文件名的第一个字符批量重命名的脚本?

通过忽略文件名中第一个空格后的所有内容来重命名文件

如何通过组合三个变量并忽略文件扩展名来批量重命名文件?

重命名多个文件,通过“_”分割文件名并保留第一个和最后一个字段

如何在Windows中批量重命名文件并将文件名中的第一个单词与第二个单词交换?

PowerShell重命名文件名并保留扩展名

删除然后重命名:相同的文件名,不同的扩展名

批量重命名,无论文件扩展名如何

如何通过删除包括文件名中最后一次出现“by”在内的所有内容来重命名几千个文件

通过在文件扩展名之前删除特定字符来批量重命名文件?

正则表达式在没有文件扩展名的最后一个点之后获取文件名的一部分

如何读取文件名最后一个字符并通过运行批处理文件重命名它们

重命名所有“。” 文件名中扩展名“ _”(扩展名除外)

一个重命名文件名的智能python程序

从路径中删除最后一个扩展名

根据包含的文件名批量重命名zip文件

用Jest忽略文件扩展名

Spring不忽略文件扩展名

使用Java将文件名列表重命名为另一个列表的文件名

如何重命名文件名的最后一部分

通过提取文件名和扩展名的第一部分来重命名文件夹中的文件(R 编程)

如何在Linux / Unix中将多个文件从一个扩展名重命名为另一个扩展名?

在CentOS 7中批量重命名JPG文件名

批量重命名文件名,包括空格和模式

在Windows 10上批量重命名文件名

使用特定条件批量重命名文件名

批量重命名文件名,保留ext?

重命名文件,删除文件名bash脚本的一部分