linux - 使用 Bash 重命名和移动通配 rune 件

标签 linux bash rename mv eyed3

我正在尝试使用这个 bash 脚本执行以下操作,但我已经解脱了......

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

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

3) 使用 eyeD3 将标题标签“NEW NAME”写回文件

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

除了最后一位(第 4 位)之外,一切都在工作。

我知道我在使用 mv 命令时做错了什么,但我不确定是什么。

代码如下:

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

任何人都可以告诉我我方法的错误吗? ;)

最佳答案

将稍后命令中的 *.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 ';'

关于linux - 使用 Bash 重命名和移动通配 rune 件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235772/

相关文章:

linux - 在 Apache 2 中将 domain.com 重定向到 www.domain.com

linux - 为什么tomcat在初始化VM的时候一再报错

linux - 解决在 ubuntu 14.04 LTS 中加载共享库 : libselinux. so.1 时出现的错误

bash - 在 bash 脚本中设置别名

linux - Bash 脚本 - 嵌套循环取不正确的值

linux - 将 id 添加到下载的 youtube 播放列表

git - 如何在 git 中重新分配哪个文件被重命名为哪个文件?

c - 接收从 "supernet"发送的本地广播包

BASH:查找并重命名文件和目录

ms-access - 如何重命名Access DB中的主键值