gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:32:46 26 4
gpt4 key购买 nike

我正在尝试使用这个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com