bash - 使用不断变化的模式重命名文件

标签 bash rename

我想用模式重命名 bash 中的不同文件,并找到了这个选项:

rename 's/.2007/(2007)/g' *.*  

通过这种模式,我可以将名称中包含“.2007”的每个文件重命名为“(2007)”
--> 这正是我想做的。

下一步:
我想自动执行此操作,因为我有 1995 - 2017 年的文件。可以这样做:

rename 's/.2007/(2007)/g' *.*  
rename 's/.2008/(2008)/g' *.*  
rename 's/.2009/(2009)/g' *.*  

等等

但实际上,还有其他解决方案吗?

我的文件的命名如下(它们的长度不同......):

FILENAME.ANOTHERFILENAME.2007.jpg  
FILENAME.2007.jpg  
FILENAME.ANOTHERFILENAME.SOMETIMESONEMORE.2007.jpg  

最佳答案

随着 Perl 的重命名:

 rename -n 's/.([1-2][0-9]{3})/($1)/' *.*

这会将所有文件从 1000 重命名为 2999。如果一切看起来都很好,请删除 -n

关于bash - 使用不断变化的模式重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41481934/

相关文章:

bash - shopt 在 shell 函数中不起作用

bash - 在 Bash 中生成符合范围的随机数

regex - 修剪目录中所有文件的一部分文件扩展名 - Linux

macos - 如何在 MacOS 中递归重命名文件夹和文件

使用 dplyr rename(across(

python - 从 Pandas 聚合 ("FutureWarning: using a dict with renaming is deprecated"重命名结果列)

bash - 奇怪的(无限)while 循环,代码在 "do"之前

python - 有没有办法同时用一个脚本运行多个 bash 脚本?

git - 克隆 Gist 但想重命名文件夹

ios - 如何在 XCode 中重命名项目或应用程序?