查找文件并将HandBrakeCLI转换为一行

时间:2018-07-31 02:25:14

标签: bash handbrakecli

不确定是否可行...

我正在尝试编写一个终端命令(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

我一直无法弄清楚的是如何将在find中找到的文件的文件名/路径插入到file.mkv中,然后以相同的文件名但以mkv格式输出转换后的文件。 / p>

是否可以在一行中执行此操作,或者我需要在bash脚本中对此进行细分?

1 个答案:

答案 0 :(得分:1)

单线尝试以下方法:

find . -type f -name "*.avi" -print0 | perl -pe 's/\.avi\0/\0/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%选项用从标准输入中读取的名称替换“%”。