使用子命令查找 -exec

find -exec with subcommand

我目前正在编写一个脚本,它将所有找到的 MKV/MKA/MKS 文件的标题设置为其基本名称,例如:

/path/to/the/file/this is a cool title.mkv

应使用 mkvpropedit 自动编辑,标题应设置为“这是一个很酷的标题”。

我可以在 ATM 上将标题设置为静态值,但由于标题应始终是文件名(不带扩展名),所以它不起作用。

我的脚本如下:

find . -iname "*.mk*" -type f -exec mkvpropedit -e info --set title="$(basename)" {} \;

它运行“find”,然后对每个找到的条目执行 -exec,并将标题设置为找到的条目“basename”。至少它应该如何工作。但是 basename 不起作用,因为它不知道应该从什么创建 basename。

有没有办法将路径传递给 -exec 命令中的子命令?

您可以通过将文件名传递给 sh 来完成此类操作:

find . -iname "*.mk*" -type f -exec sh -c 'mkvpropedit -e info --set title="$(basename "")" ""' _ {} \;