我正在尝试对目录中分组的多个视频文件进行交互,并且ffmpeg返回有关路径的错误,似乎路径被破坏,在第一个空格结束。你能指出我这里有什么问题吗?文件和目录有空格。
var splitted = inputString.Split();
循环按空格分割路径并将单词作为条目。如何解决这个问题?
var name = splitted[0];
var number = splitted[1];
var location = splitted[2];
答案 0 :(得分:3)
使用
find -type f -name '*.mkv' -exec ffmpeg -n -i {} -c:v copy ~/Pobrane/{} \;
-exec
为每个找到的路径执行以下ffmpeg
命令,将{}
替换为当前路径。 ;
通知find
ffmpeg
命令在那里结束。
引用'*.mkv'
以便将文字字符串传递给find
,然后搜索以*.mkv
结尾的文件。如果你不引用字符串并在工作目录中放置一些mkv文件,那么在开始*.mkv
之前,shell会扩展不带引号的find -type f -name firstFile.mkv secondFile.mkv ...
,从而产生find
。
不引用~
。不带引号的~
会扩展到您的主目录(可能是/home/yourname
),但引用的'~'
是一个文件名为~
的目录/文件。
如何在ffmpeg调用之前添加
mkdir -p
?
您可以将mkdir
和ffmpeg
打包在一个函数中execute the function:
myFunction() {
mkdir -p "$(dirname "$1")"
ffmpeg -n -i "$1" -c:v copy ~/Pobrane/"$1"
}
export -f myFunction
find -type f -name '*.mkv' -exec bash -c 'myFunction "$0"' {} \;
find . -type f -iname "*.txt" -print0 | while IFS= read -r -d $'\0' file; do
mkdir -p "$(dirname "$file")"
ffmpeg -n -i "$file" -c:v copy ~/Pobrane/"$file"
done