1

我正在尝试使用此 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 \;

谁能告诉我我的方式的错误?;)

4

1 回答 1

0

*.mp3将您稍后的命令中的更改{}为传递您刚刚标记的文件的显式名称。mv将拒绝在一次调用中将多个文件重命名为相同的名称——当传递两个以上的参数时,它要求最后一个是一个目录——无论如何,作为 find 的参数给出的任何内容都-exec作为文字参数传递,不是通过 shell,所以不会扩展 glob,不会处理重定向等,除了 find 自己的特殊字符串,例如{}.

find /usr/incoming/ -name '*.mp3' \
   -exec eyeD3 --remove-all -t 'NEW NAME' {} ';' \
   -exec mv -f {} /usr/complete/latest.mp3 ';'
于 2014-06-16T02:22:40.033 回答