我有一个包含图片和文本文件的文件夹。 图像名称按以下顺序排列: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
答案 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 )
但建议的解决方案更清洁,更具惯用性。