使用子命令查找 -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 "")" ""' _ {} \;
我目前正在编写一个脚本,它将所有找到的 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 "")" ""' _ {} \;