用ffmpeg在目录树上循环Bash,空格错误?
我试图在目录中分组的多个视频文件上进行交互,ffmpeg返回有关路径的错误,似乎路径已断开,在第一个空格处结束。你能告诉我这里有什么问题吗?文件和目录有空格用ffmpeg在目录树上循环Bash,空格错误?,bash,ffmpeg,find,Bash,Ffmpeg,Find,我试图在目录中分组的多个视频文件上进行交互,ffmpeg返回有关路径的错误,似乎路径已断开,在第一个空格处结束。你能告诉我这里有什么问题吗?文件和目录有空格 $ for f in $(find -type f -name *.mkv); do ffmpeg -n -i "$f" -c:v copy "~/Pobrane/$f" ; done 循环按空间分割路径,并将单词作为条目。如何解决这个问题 $ for f in $(find -type f -name *.mkv); do echo "
$ for f in $(find -type f -name *.mkv); do ffmpeg -n -i "$f" -c:v copy "~/Pobrane/$f" ; done
循环按空间分割路径,并将单词作为条目。如何解决这个问题
$ for f in $(find -type f -name *.mkv); do echo "$f"; done
./homeworks/2017-04-03
00-54-57
homework3b.mkv
./homeworks/2017-04-03
00-21-36
homework1.mkv
./homeworks/2017-04-03
更换回路
使用
-exec
对每个找到的路径执行以下ffmpeg
命令,用当前路径替换{}
。
通知find
命令到此结束
引用'*.mkv'
将文本字符串传递给查找
,然后查找以*.mkv
结尾的文件。如果您没有引用字符串,并且工作目录中有一些mkv文件,shell将展开未引用的*.mkv
,从而在启动find
之前,找到-type f-name firstFile.mkv secondFile.mkv…
不要引用~
。不带引号的~
扩展到您的主目录(可能是/home/yourname
),但带引号的'~'
是一个具有文本名称~
的目录/文件
创建父目录
如何在ffmpeg调用之前添加mkdir-p
您可以将mkdir
和ffmpeg
包装在一个函数中,然后:
或:
. 另请看。(另一个有用的资源是。)没关系,我只是自己尝试了一下,似乎没有什么不同。
find -type f -name '*.mkv' -exec ffmpeg -n -i {} -c:v copy ~/Pobrane/{} \;
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