我需要重命名超过1500 * .jpg文件。 我有2列的文件名列表的文本文件,制表符分隔:使用文件名列表重命名批处理文件
- 1305 1979年
旧名 - 新的文件名
- 1305_1.jpg - 1979
- 1310_main_origin.jpg - 1 73
- 1311_2.jpg - 172
如何我可以检查从第一列和旧文件名前4位和2列重命名为另一4位?
//对不起我的英文
我需要重命名超过1500 * .jpg文件。 我有2列的文件名列表的文本文件,制表符分隔:使用文件名列表重命名批处理文件
旧名 - 新的文件名
如何我可以检查从第一列和旧文件名前4位和2列重命名为另一4位?
//对不起我的英文
使用一个循环,如下图所示:
while read -r old new
do
arr=(${old}_*.jpg)
if ((${#arr[@]} == 1))
then
mv "${arr[0]}" "$new.jpg"
else
echo "Error: Multiple files found for $old: ${arr[@]}"
fi
done < file
请注意,有一个安全检查以确保您没有多个具有相同前缀的文件。例如,如果您有1305_1.jpg
和1305_2.jpg
,则无法将它们重命名为1979.jpg
,因此脚本将显示错误。
试试这个,并在验证它是你想要的后删除回声。 changefile
是包含该文件的名称更改
while read from to; do
echo "mv ${from}* $to"
done < changefile
你应该倒序changefile确保1306施加比之前130和比前13
我不明白:文件只是'1305'或'1305_01.jpg' ...?意思是说,将'mv col1 col2'做成它? – fedorqui
我的旧文件名在1305,1310,1311等之后有不同的结尾 我需要将它重命名为2列中的名称。 – RSH
这是Windows还是Unix环境? – Graeme