使用mac.I有几个文件夹包含png图像。重命名列表中的osx文件
我也有他们的原始文件名称(图像)和我想重命名他们的名称的列表。
任何人可以帮我一个脚本吗? (我走过了所有方法都是模式匹配基础,他们不提关于使用列表重命名的任何东西)
我有列表,这样
“焦糖布丁云母”,“E2DBCF CSV “
旧名是‘焦糖布丁Mica.png’和新的名称应该是‘E2DBCF.png’。像这样,我有数百个文件
使用mac.I有几个文件夹包含png图像。重命名列表中的osx文件
我也有他们的原始文件名称(图像)和我想重命名他们的名称的列表。
任何人可以帮我一个脚本吗? (我走过了所有方法都是模式匹配基础,他们不提关于使用列表重命名的任何东西)
我有列表,这样
“焦糖布丁云母”,“E2DBCF CSV “
旧名是‘焦糖布丁Mica.png’和新的名称应该是‘E2DBCF.png’。像这样,我有数百个文件
sed -e "s/^\"\([^\"]*\)\",\"\([^\"]*\)\"$/mv '\1' '\2'/" | sh
...只要你不有换行符或单引号或双引号文件名称。
取出| sh
进行测试。
好吧,我会尝试...我的文件名有空格btw – humblePilgrim
空格很好,只是不引用(因为他们需要逃脱)或换行符(因为'sed'不能很好地处理数据,这不是纯粹的行无需额外的努力)。 – tripleee
试试:
#!/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
。最后它会告诉你数字为success
和failed
的动作。
注意:它在当前目录中工作,除了在文件名中添加目录地址。
我是新来的..你能解释一下工作吗? – humblePilgrim
@MithunMadhav对不起,我更新了帖子。核实。注意:我在Linux平台上尝试过。希望它适合你。 – Mortezaipo
@MithunMadhav你应该把'myfile'改成你的文件名。 – Mortezaipo
你能告诉我们该文件的一些行吗? – Mortezaipo
好吧让我编辑问题 – humblePilgrim
我编辑了问题 – humblePilgrim