首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过使用shell脚本替换文件名中的特定模式来重命名多个文件

通过使用shell脚本替换文件名中的特定模式来重命名多个文件
EN

Stack Overflow用户
提问于 2011-07-27 14:38:51
回答 8查看 185.2K关注 0票数 182

编写一个简单的脚本,它将自动重命名许多文件。例如,我们希望将文件*001.jpg重命名为用户定义的字符串+ 001.jpg (例如: MyVacation20110725_001.jpg)此脚本的用法是让数码相机照片具有一些有意义的文件名。

我需要为此编写一个shell脚本。有人能建议一下如何开始吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-07-27 14:45:47

下面是一个帮助你起步的例子。

代码语言:javascript
复制
for f in *.jpg; do mv "$f" "$(echo "$f" | sed s/IMG/VACATION/)"; done

在本例中,我假设您的所有图像文件都包含字符串IMG,并且您希望用VACATION替换IMG

外壳程序会自动对所有匹配的文件执行*.jpg

mv (文件的新名称)的第二个参数是sed命令的输出,该命令将IMG替换为VACATION

如果您的文件名包含空格,请仔细注意"$f"表示法。您需要使用双引号来保留空格。

票数 309
EN

Stack Overflow用户

发布于 2013-07-29 20:05:42

您可以使用 rename 实用程序按模式重命名多个文件。例如,下面的命令将字符串MyVacation2011_添加到所有扩展名为jpg的文件前面。

代码语言:javascript
复制
rename 's/^/MyVacation2011_/g' *.jpg

代码语言:javascript
复制
rename <pattern> <replacement> <file-list>
票数 191
EN

Stack Overflow用户

发布于 2017-07-07 15:59:36

在这个例子中,我假设你所有的图像文件都以"IMG“开头,而你想把"IMG”替换成“”。

解决方案:首先识别所有jpg文件,然后替换关键字

代码语言:javascript
复制
find . -name '*jpg' -exec bash -c 'echo mv $0 ${0/IMG/VACATION}' {} \; 
票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6840332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档