【发布时间】:2023-03-07 11:19:01
【问题描述】:
我有以下代码,在转码完成后,我希望移动新创建的文件。但只有在之后,我不想写到另一个文件夹,因为它转码。这就是为什么我认为使用 exec 更好,因为只有在前一个 exec 读取为 true 时才会处理它。另请注意,当前文件夹中可能有多个文件。
#!/bin/bash
#
# Change this to specify a different handbrake preset. You can list them by running: "HandBrakeCLI --preset-list"
#
PRESET="AppleTV 2"
if [ -z "$1" ] ; then
TRANSCODEDIR="/path/to/folder"
else
TRANSCODEDIR="$1"
fi
find "$TRANSCODEDIR"/* -type f -exec bash -c 'HandBrakeCLI -i "$1" -o "${1%.*}".mp4 -- preset="$PRESET"' __ {} \; -exec rm {} \;
我对 linux 的了解大概是:
#!/bin/bash
#
# Change this to specify a different handbrake preset. You can list them by running: "HandBrakeCLI --preset-list"
#
PRESET="AppleTV 2"
if [ -z "$1" ] ; then
TRANSCODEDIR="/path/to/folder"
else
TRANSCODEDIR="$1"
fi
find "$TRANSCODEDIR"/* -type f -exec bash -c 'HandBrakeCLI -i "$1" -o "${1%.*}".mp4 -- preset="$PRESET"' __ {} \; -exec rm {} \; -exec mv '"${1%.*}".mp4' "/path to/converted/folder" \;
但这只是说明:
mv: cannot stat â"${1%.*}".mpâ4: No such file or directory
现在我想这可能是notepad++中的一些字符隐藏在某个地方,所以我通过dos2uunix运行它。但我仍然遇到同样的错误。
现在我认为“${1%.}”.mp4 实际上并没有获取新创建的文件,而是在寻找一个名为“${1%.}”的文件。 mp4,不存在。
任何帮助将不胜感激。
【问题讨论】:
-
将你的 5 行 if/else 子句替换为:
TRANSCODEDIR=${1:-/path/to/file} -
这会将新的 mp4 移动到转换后的文件夹吗? TRANSCODEDIR=${1:-/path to/converted/folder} 还是会转码到新目录?
-
这只是一种更紧凑的方式来避免您所拥有的
if/then/else。 -
+1 以对抗路过投票。
标签: linux ubuntu mv transcode handbrake