首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Bash {thisfile.jpg -> newfile1.jpg,thatfile.jpg -> newfile2.jpg}顺序重命名文件

如何使用Bash {thisfile.jpg -> newfile1.jpg,thatfile.jpg -> newfile2.jpg}顺序重命名文件
EN

Stack Overflow用户
提问于 2013-12-04 18:03:43
回答 4查看 465关注 0票数 1

假设我有100个jpg文件。

代码语言:javascript
复制
DSC_0001.jpg
DSC_0002.jpg
DSC_0003.jpg
....
DSC_0100.jpg

我想把它们重命名为

代码语言:javascript
复制
summer_trip_1.jpg
summer_trip_2.jpg
summer_trip_3.jpg
.....
summer_trip_100.jpg    

因此,我希望修改这些属性: 1.文件名2.文件顺序(如创建了按日期排序的文件)

我如何通过使用bash来实现这一点?比如:

代码语言:javascript
复制
for file in *.jpg ; do mv blah blah blah ; done

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-04 18:14:48

它非常简单:有一个变量,并在每一步增加它。

示例:

代码语言:javascript
复制
cur_number=1
prefix="summer_trip_"
suffix=""
for file in *.jpg ; do
    echo mv "$file" "${prefix}${cur_number}${suffix}.jpg" ;
    let cur_number=$cur_number+1  # or :  cur_number=$(( $cur_number + 1 ))
done

一旦你认为它已经准备好了,,取出echo,让mv发生。

如果您希望按文件日期订购它们(例如,当混合几个摄像机的照片时,如果在您的相机上滚动“数字”):

变化

代码语言:javascript
复制
for file in *.jpg ; do

转到

代码语言:javascript
复制
for file in $( ls -1t *.jpg ) ; do

请注意,第二个示例只有在原始文件名中没有空间(和其他奇怪的字符)时才能工作,这在我所知道的几乎所有相机上都很好。

最后,您可以使用${cur_number}代替$(printf '%04s' "${cur_number}"),这样新的数字就有前导零,这样排序就容易多了。

票数 2
EN

Stack Overflow用户

发布于 2013-12-04 19:24:28

使用rename怎么样?

代码语言:javascript
复制
 rename DSC_ summer_trip_ *.jpg

重命名手册页

票数 0
EN

Stack Overflow用户

发布于 2013-12-04 20:20:40

如果原始数字都填充了长度相同的零,则此操作是可行的:

代码语言:javascript
复制
i=0; for f in DSC_*.jpg; do mv "$f" "summer_trip_$((++i)).jpg"; done 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20382612

复制
相关文章

相似问题

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