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'?

関連情報