在一行中查找文件和 HandBrakeCLI 转换
Find files and HandBrakeCLI convert in a single line
不确定这是否可能...
我正在尝试编写一个终端命令 (linux),它会找到所有具有特定扩展名的视频文件,然后使用 HandBrakeCLI 转换它们
我记下了前半部分:
find . -type f -name "*.avi*" -exec
我有一个有效的 HandBrakeCLI 命令:
HandBrakeCLI -i file.mkv -o file2.mkv -e x265 --vfr -q 20 --all-audio --all-subtitles
我一直想不通的是如何将查找中找到的文件的文件name/path插入到file.mkv中,然后以相同的文件名输出转换后的文件,但是以 mkv 格式。
是否可以在一行中执行此操作,或者我是否需要在 bash 脚本中将其分解?
作为单线,尝试这样的事情:
find . -type f -name "*.avi" -print0 | perl -pe 's/\.avi[=10=]/[=10=]/g' | xargs -0 -I% HandBrakeCLI -i %.avi -o %.mkv -e x265 --vfr -q 20 --all-audio --all-subtitles
find 中的-print0 选项在标准输出上打印文件名,后跟一个空字符。
以下 perl 片段删除了 .avi 扩展名以向 xargs 提供基本名称。
xargs 中的 -I% 选项用从标准输入读取的名称替换“%”。
不确定这是否可能...
我正在尝试编写一个终端命令 (linux),它会找到所有具有特定扩展名的视频文件,然后使用 HandBrakeCLI 转换它们
我记下了前半部分:
find . -type f -name "*.avi*" -exec
我有一个有效的 HandBrakeCLI 命令:
HandBrakeCLI -i file.mkv -o file2.mkv -e x265 --vfr -q 20 --all-audio --all-subtitles
我一直想不通的是如何将查找中找到的文件的文件name/path插入到file.mkv中,然后以相同的文件名输出转换后的文件,但是以 mkv 格式。
是否可以在一行中执行此操作,或者我是否需要在 bash 脚本中将其分解?
作为单线,尝试这样的事情:
find . -type f -name "*.avi" -print0 | perl -pe 's/\.avi[=10=]/[=10=]/g' | xargs -0 -I% HandBrakeCLI -i %.avi -o %.mkv -e x265 --vfr -q 20 --all-audio --all-subtitles
find 中的-print0 选项在标准输出上打印文件名,后跟一个空字符。
以下 perl 片段删除了 .avi 扩展名以向 xargs 提供基本名称。
xargs 中的 -I% 选项用从标准输入读取的名称替换“%”。