比较并删除 2 个目录中较大的视频文件

比较并删除 2 个目录中较大的视频文件

我已经将所有家庭视频转换为 HEVC,有时文件最终会变小,有时则不会。我目前正在手动比较所有视频文件,这需要很长时间。

我想知道是否有一个脚本可以检查这 2 个文件夹并删除 2 个文件中较大的文件并保留较小的文件。

毕竟我这样做是为了节省空间。我在 Ubuntu 17.04 CLI 中完成所有转换,因此 bash 脚本会更好,但我不是脚本编写者。

答案1

我会使用zshsudo apt-get install zsh如果尚未安装):

#! /bin/zsh -
typeset -A files
for f in **/*.*(.LM+50oL); do
  if (($+files[$f:t:r])); then
    printf '"%s" was smaller than "%s"\n' $files[$f:t:r] $f
    ls -lUd -- $files[$f:t:r] $f
    rm -i -- $f
  else
    files[$f:t:r]=$f
  fi
done

即遍历按大小排序的所有超过 50MiB(典型的视频)文件,如果之前已经见过具有相同尾部(基本名称)和根名称(即没有扩展名)的文件,则意味着它较小,所以提出将其移除(这样-i你就有机会拒绝)。

例子:

$ that-script
"foo.mov" was smaller than "foo.avi"
-rw-r--r-- 1 chazelas chazelas 62914560 Jun 29 00:08 foo.mov
-rw-r--r-- 1 chazelas chazelas 73400320 Jun 29 00:08 foo.avi
rm: remove regular file 'foo.avi'?

相关内容