这是一个棘手的问题。我需要使用 2 个文件夹、电影文件夹和字幕文件夹执行以下操作:
在电影文件夹中搜索每部电影,对于找到的每个文件,获取文件名并尝试在字幕文件夹中搜索它。
如果找到该文件,则什么都不做。如果未找到该文件,则将文件名输出到一个日志文件中,该文件将收集所有没有字幕的电影。
电影文件夹具有以下格式:
/电影
/Movies/SomeMovieFolder1
/Movies/SomeMovieFolder2
/Movies/SomeMovieFolder3
/Movies/SomeMovieFolder...
/Movies/SomeMovieFolderN
每个movieFolder里面是实际的电影(每个电影都在它自己的Movie文件夹中的文件夹中。
字幕文件夹将所有字幕放在同一位置。在字幕文件夹中。
我的想法是find
使用一段时间将 2 个命令循环在一起。这将是一个 shell 脚本 (bash)。
电影是MP4或MKV格式。字幕为SRT格式。
如果电影和字幕文件的文件名匹配并且只有扩展名不同,这样的事情应该可以工作。
#!/bin/bash
movie_dir=~/Movies
subtitle_dir=~/Subtitles
log=~/log.txt
for i in "$movie_dir"/*;do
filname="${i%.*}"
if [ ! -e "$subtitle_dir/$filename.srt" ];then
echo "$filename" >> "$log"
fi
done
Run Code Online (Sandbox Code Playgroud)
编辑 当每个电影文件都在它自己的文件夹中时,请尝试:
#!/bin/bash
movie_dir=~/Movies
subtitle_dir=~/Subtitles
log=~/log.txt
find "$movie_dir" -type f -name "*.mp4" -o -name "*.mkv" | while read i;do
filename="$(basename "${i%.*}")"
if [ ! -e "$subtitle_dir/$filename.srt" ];then
echo "$filename" >> "$log"
fi
done
Run Code Online (Sandbox Code Playgroud)
无论电影文件夹结构如何,第二种方法都应该有效,只要文件名相同。