使用Bash重命名和移动通配符文件

时间:2014-06-16 01:57:42

标签: linux bash rename mv eyed3

我尝试使用此bash脚本执行以下操作,但我已经解开了..

1)在/ usr / incoming /目录中查找扩展名为.mp3的每个文件

2)使用eyeD3去除所有现有的ID3标签

3)使用eyeD3编写标题标签" NEW NAME"返回文件

4)使用mv将扩展名为.mp3的每个文件重命名为latest.mp3,然后强制移动它(因此它将覆盖任何其他具有相同名称的文件)到usr / complete目录。

这一切都与最后一位(No.4)分开。

我知道我对mv命令做错了什么,但我不确定是什么。

以下是代码:

 find /usr/incoming/ -name '*.mp3' \
   -exec eyeD3 --remove-all -t 'NEW NAME' '{}' \; \
   -exec mv -f '*.mp3' latest.mp3 /usr/complete \;

有人能告诉我我的方式错误吗? ;)

1 个答案:

答案 0 :(得分:0)

将以后命令中的*.mp3更改为{},以传入您刚刚标记的文件的显式名称。 mv将拒绝在一次调用中将多个文件重命名为相同的名称 - 当传递两个以上的参数时,它要求最后一个是一个目录 - 无论如何,任何给定的参数都可以找到&#39 ; s -exec作为文字参数传递,而不是通过shell传递,因此不会扩展整数,不会处理重定向等,除了查找自己的特殊字符串,例如{}

find /usr/incoming/ -name '*.mp3' \
   -exec eyeD3 --remove-all -t 'NEW NAME' {} ';' \
   -exec mv -f {} /usr/complete/latest.mp3 ';'