不确定是否可行...
我正在尝试编写一个终端命令(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脚本中对此进行细分?
答案 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%选项用从标准输入中读取的名称替换“%”。