解释起来有些困难,但是我正在寻找一个相对简单的bash脚本,如果找不到与mp4相同名称的文件,则可以删除该文件。
本质上,我有如下文件:
S01E02 - Name of Episode 2.description
S01E02 - Name of Episode 2.srt
S01E02 - Name of Episode 2.mp4
S01E03 - Name of Episode 3.description
S01E03 - Name of Episode 3.srt
S01E03 - Name of Episode 3.mp4
S01E04 - Name of Episode 4.description
S01E04 - Name of Episode 4.srt
我要完成的工作是获得一个bash脚本设置,该脚本可以搜索文件并删除文件,例如:
S01E04 - Name of Episode 4.description
S01E04 - Name of Episode 4.srt
因为没有匹配的mp4文件
我大约一周前才开始玩bash,所以我敢肯定它比我要实现的要容易得多,但是我自己却无法弄清楚。
我当时在考虑使用for命令,但是无法确定如何识别正在查看的文件是否匹配。老实说,我没有做太多尝试,因为我什至都没有想到从哪里开始。
提前致谢!
for file in *; do
[[ $file = *.mp4 ]] && continue # skip .mp4 files
mp4_file=${file%.*}.mp4
[[ -s $mp4_file ]] || rm -f -- "$file"
done
让我们看一下它是如何工作的:
${file%.*}
是一个参数扩展,它.*
从变量的末尾去除最短的字符串匹配file
。mp4_file
因此具有无扩展名,并带有.mp4
附加名称。test -s "$mp4_file"
,或其现代替代语法格式[[ -s $mp4_file ]]
,将检查这样命名的文件是否存在并且不为空。foo || bar
bar
仅当foo
返回boolean-false值时才执行。因此,结果是循环遍历当前目录中的文件,跳过以结尾的文件,.mp4
查找配对或匹配的.mp4
文件,并删除找不到匹配的文件.mp4
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句