所以我想更改目錄及其子目錄中所有電影的元標題
for file in *; do
if [[ $file == *.mkv ]]
then
mkvpropedit --set "title=$file" "$file";
elif [[ $file == *.mp4 ]]
then
exiftool "-Title<Filename" *.mp4 -overwrite_original -r
else
echo "$file wrong filename"
fi
done
到目前為止,這是我的一般想法,但它沒有找到文件。這些命令應該可以工作,但甚至沒有輸入 if 條件。也只是使用 * 不搜索子目錄。
您可以使用兩個find
命令:
find . -type f -name '*.mkv' -exec mkvpropedit --set "title={}" "{}" \;
find . -type f -name '*.mp4' -exec exiftool "-Title<Filename" "{}" -overwrite_original -r \;
第一個find
遞歸地在工作目錄中搜索名稱以 結尾的任何文件.mkv
,然後運行以下命令(即,該命令是-exec
和之間的所有內容\;
),將所有{}
s替換為文件名。
第二個find
基本上做同樣的事情,但對於名稱以.mp4
.
有關更多信息find
,請參閱其 Linux 手冊頁或GNU 手冊。
如果只想獲取文件名來設置標題,可以使用以下命令:
find . -type f -name '*.mkv' -exec sh -c 'mkvpropedit --set "title=$(basename "$1")" "$1"' sh '{}' \;
basename
將路徑作為參數並僅返迴路徑的最後一部分(即目錄名或文件名)。
sh -c 'mkvpropedit --set "title=$(basename "$1")" "$1"' sh '{}'
sh
與命令一起運行mkvpropedit --set "title=$(basename "$1")" "$1"
,其中命令的參數 ( $1
) 是find
. (文件名以這種方式作為參數傳遞以避免命令注入。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句