如何删除没有匹配的文件,具有不同扩展名的文件

扎克·多库奇奇(Zach Dokuchic)

解释起来有些困难,但是我正在寻找一个相对简单的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%.*}是一个参数扩展,它.*从变量的末尾去除最短的字符串匹配filemp4_file因此具有无扩展名,并带有.mp4附加名称
  • test -s "$mp4_file",或其现代替代语法格式[[ -s $mp4_file ]],将检查这样命名的文件是否存在并且不为空。
  • foo || barbar仅当foo返回boolean-false值时才执行

因此,结果是循环遍历当前目录中的文件,跳过以结尾的文件,.mp4查找配对或匹配的.mp4文件,并删除找不到匹配的文件.mp4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

glob语法以匹配具有任何扩展名或没有扩展名的文件

如何比较具有不同扩展名的文件列表并删除多余的文件?

如何重命名具有不同扩展名的文件

如何删除具有多个扩展名的文件

如何删除没有特定扩展名的文件?

如何递归删除具有不同扩展名的多个文件?

如何根据特定情况删除具有不同扩展名的文件?

Bash查找大小为零的文件并删除具有不同扩展名的文件

查找具有相同名称但扩展名不同的文件并删除最早的文件

如何删除特定文件夹中具有特定扩展名的所有文件?

如何删除文件夹中所有具有特定扩展名的文件?

列出具有扩展名匹配条件的文件

在MacOS中同步具有不同扩展名的文件

重命名具有不同扩展名的文件

Labview:删除具有相同扩展名的文件

删除具有特定扩展名的文件的脚本问题

Gradle-删除具有特定扩展名的文件

bash:删除许多具有相同扩展名的文件

通过regexp删除具有特定扩展名的文件

删除具有特定扩展名的诊断文件的脚本

从具有特定扩展名的文件中删除行

如何预览没有文件扩展名的Windows文件?

删除没有特定扩展名的文件

从具有多个扩展名的文件名中删除某些扩展名

如何从Andorid中的文件夹中删除具有特定扩展名的文件

如何从git仓库中读取所有具有不同扩展名的文件?

Spark:如何递归读取目录中具有不同扩展名的所有文件?

一次删除所有具有特定名称但具有不同扩展名的文件

如何在Windows 8中删除具有特定扩展名的所有文件?