从列表中重命名osx中的文件

时间:2014-06-18 09:06:31

标签: macos shell

我正在使用mac.I有几个包含png图像的文件夹。

我还有一个原始文件名(图像)列表以及我想要重命名的名称。

任何人都可以帮我一个脚本吗? (我所经历的所有方法都是基于模式匹配的,他们没有提到任何关于使用列表重命名的方法)

我有像这样的csv列表

“CrèmeBruleeMica”,“E2DBCF”

旧名称为“CrèmeBrûléeMica.png”,新名称应为“E2DBCF.png”。就像我有数百个文件

2 个答案:

答案 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。最后,它会告诉您successfailed次操作的数量。

注意:除了在文件名中添加目录地址外,它在当前目录中有效。