假设我有100个jpg文件。
DSC_0001.jpg
DSC_0002.jpg
DSC_0003.jpg
....
DSC_0100.jpg我想把它们重命名为
summer_trip_1.jpg
summer_trip_2.jpg
summer_trip_3.jpg
.....
summer_trip_100.jpg 因此,我希望修改这些属性: 1.文件名2.文件顺序(如创建了按日期排序的文件)
我如何通过使用bash来实现这一点?比如:
for file in *.jpg ; do mv blah blah blah ; done谢谢!
发布于 2013-12-04 18:14:48
它非常简单:有一个变量,并在每一步增加它。
示例:
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发生。
如果您希望按文件日期订购它们(例如,当混合几个摄像机的照片时,如果在您的相机上滚动“数字”):
变化
for file in *.jpg ; do转到
for file in $( ls -1t *.jpg ) ; do请注意,第二个示例只有在原始文件名中没有空间(和其他奇怪的字符)时才能工作,这在我所知道的几乎所有相机上都很好。
最后,您可以使用${cur_number}代替$(printf '%04s' "${cur_number}"),这样新的数字就有前导零,这样排序就容易多了。
发布于 2013-12-04 19:24:28
使用rename怎么样?
rename DSC_ summer_trip_ *.jpg见重命名手册页
发布于 2013-12-04 20:20:40
如果原始数字都填充了长度相同的零,则此操作是可行的:
i=0; for f in DSC_*.jpg; do mv "$f" "summer_trip_$((++i)).jpg"; done https://stackoverflow.com/questions/20382612
复制相似问题