我有很多 .mkv 文件
nightmare1.mkv
nightmare2.mkv
nightmare3.mkv
...
我使用 Ubuntu 终端的 mkvmerge 来分割单身的使用此命令的文件
mkvmerge --split 1G --compression 0:none --compression 1:none --clusters-in-meta-seek -o "nightmare1.mkv" "nightmare1.mkv"
第一个噩梦是输出,第二个是输入
我得到了这个文件
nightmare1-001.mkv
nightmare1-002.mkv
...
我试图理解如何才能分裂全部.mkv 文件分成 1gb 大小的块,因为我想
nightmare1-001.mkv
nightmare1-002.mkv
...
nightmare2-001.mkv
nightmare2-002.mkv
...
nightmare3-001.mkv
nightmare3-002.mkv
...
所有噩梦电影都在同一个文件夹中。
我应该如何重写命令?问题是,我有单个 mkv 文件作为输入,并且我将其作为输出写入文件,但我想将文件夹路径设置为 mkv 文件所在的输入,并将所有新分割的 mkv 文件写入文件夹中。
答案1
您可以使用 Bashfor
循环来解决此任务:
for file in ./source/*mkv; \
do \
echo mkvmerge --split 1G --compression 0:none --compression 1:none \
--clusters-in-meta-seek -o "./split/$(basename "$file")" "$file"; \
done
- 复制并粘贴终端中的所有行并将它们作为单个命令执行。
- 一旦你对循环的空运行输出感到满意,删除
echo
命令进行实际操作。
上面的例子中./source/
是原始文件存储目录的相对路径。 分别./split/
是目标路径,必须预先创建。
对于每次迭代,变量的值$file
将如下所示./source/nightmare-i.mkv
。命令替换$(basename "$file")
将仅返回文件名而不返回路径,即nightmare-i.mkv
,因此输出选项的值将如下所示./split/nightmare-i.mkv
。