我正在使用mac.I有几个包含png图像的文件夹。
我还有一个原始文件名(图像)列表以及我想要重命名的名称。
任何人都可以帮我一个脚本吗? (我所经历的所有方法都是基于模式匹配的,他们没有提到任何关于使用列表重命名的方法)
我有像这样的csv列表
“CrèmeBruleeMica”,“E2DBCF”
旧名称为“CrèmeBrûléeMica.png”,新名称应为“E2DBCF.png”。就像我有数百个文件
答案 0 :(得分:0)
sed -e "s/^\"\([^\"]*\)\",\"\([^\"]*\)\"$/mv '\1' '\2'/" | sh
...如果您的文件名中没有换行符或单引号或双引号。
取出| sh
进行测试。
答案 1 :(得分:0)
试一试:
#!/bin/bash
renamed=0
failed=0
while IFS=',' read old_name new_name; do
old_name=`echo ${old_name}.png | sed 's/\"//g'`
new_name=`echo ${new_name}.png | sed 's/\"//g'`
if [ -e "$new_name" ]; then
mv "$new_name" "$old_name"
#echo "$new_name renamed to $old_name"
renamed=$[$renamed+1]
else
#echo "$new_name not found!"
failed=$[$failed+1]
fi
done < "myfile"
echo "success renamed: $renamed"
echo "failed rename: $failed"
通过IFS
我添加了一个分隔符,该分隔符将保存old_name
中的第一个值和new_name
变量中的第二个值。
然后通过sed
命令将"
替换为无值。然后检查文件是否存在,如果文件存在,则mv
命令将new_name
替换为old_name
。最后,它会告诉您success
和failed
次操作的数量。
注意:除了在文件名中添加目录地址外,它在当前目录中有效。