使用文本文件中的数字重命名图像

时间:2014-04-08 15:43:59

标签: shell scripting file-rename

我有一个包含图片和文本文件的文件夹。 图像名称按以下顺序排列:tramnummerx.JPG 文本文件的顺序如下:tramnummerx.txt

要明确:x是变量号

.txt内部是一个4位数字,例如6303。 在这种情况下,我想将.JPG文件重命名为:tramnummerx-6303.JPG

在我目前的剧本中,我这样做了:

x=O
extention='*.txt'
for i in 'ls $extention'
do
x = 'expr $x + 1'
y= ??? the command for extracting the number ???
mv tramnummerx.JPG tramnummerx-$y.JPG
done

我为{y =“尝试了awk '{print $(NF-1), $NF;}' filename之类的内容,但我最终以这种方式删除了我的文件。

提前致谢!

解决方案:

for i in 'ls $extention'
do
x='expr $x +1'
read y < tramnummer$x.txt
mv tramnummer$x.JPG tramnummer$x-$y.JPG
done

1 个答案:

答案 0 :(得分:0)

使用正则表达式匹配从图像文件名中提取数字,使用read从相应的文本文件中提取新数字。 (如果我误解了你的问题,可能需要调整一些细节,但一般方法将保持不变。)

for img in *.JPG; do
    [[ $img =~ tramnummer([[:digit:]]+).JPG ]]
    x=${BASH_REMATCH[1]}
    read y < tramnummer$x.txt
    mv tramnummer$x.JPG tramnummer$x-$y.JPG
done

在现有代码中,您可以使用

之类的行
x=$(( x + 1 ))
y=$(< tramnummer$x.txt )

但建议的解决方案更清洁,更具惯用性。