2014-06-18 56 views
0

使用mac.I有几个文件夹包含png图像。重命名列表中的osx文件

我也有他们的原始文件名称(图像)和我想重命名他们的名称的列表。

任何人可以帮我一个脚本吗? (我走过了所有方法都是模式匹配基础,他们不提关于使用列表重命名的任何东西)

我有列表,这样

“焦糖布丁云母”,“E2DBCF CSV “

旧名是‘焦糖布丁Mica.png’和新的名称应该是‘E2DBCF.png’。像这样,我有数百个文件

+0

你能告诉我们该文件的一些行吗? – Mortezaipo

+0

好吧让我编辑问题 – humblePilgrim

+0

我编辑了问题 – humblePilgrim

回答

0
sed -e "s/^\"\([^\"]*\)\",\"\([^\"]*\)\"$/mv '\1' '\2'/" | sh 

...只要你不有换行符或单引号或双引号文件名称。

取出| sh进行测试。

+0

好吧,我会尝试...我的文件名有空格btw – humblePilgrim

+0

空格很好,只是不引用(因为他们需要逃脱)或换行符(因为'sed'不能很好地处理数据,这不是纯粹的行无需额外的努力)。 – tripleee

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我添加一个分隔符,将节省在new_name变量old_name第一值和第二值。 然后通过sed命令我将"替换为无值。然后检查文件是否存在,然后mv命令将new_name替换为old_name。最后它会告诉你数字为successfailed的动作。

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

+0

我是新来的..你能解释一下工作吗? – humblePilgrim

+0

@MithunMadhav对不起,我更新了帖子。核实。注意:我在Linux平台上尝试过。希望它适合你。 – Mortezaipo

+0

@MithunMadhav你应该把'myfile'改成你的文件名。 – Mortezaipo