Сравните и удалите видеофайлы большего размера в 2 каталогах

Я конвертировал все свои домашние видео в HEVC, и иногда файлы оказывались меньше, а иногда - нет. В настоящее время я сравниваю все видео файлы вручную, и это занимает вечность.

Мне было интересно, есть ли сценарий, который может проверить 2 папки и удалить больший из 2 файлов и оставить меньший.

В конце концов, я делаю это для экономии места. Я делаю все свои преобразования в Ubuntu 17.04 CLI, поэтому сценарий bash был бы предпочтительнее, но я не являюсь сценаристом.

0
26.06.2017, 04:07
1 ответ

Я бы использовал zsh(sudo 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

То есть пройти все более 50МиБ (как типичные для видео )файлы, отсортированные по размеру, и если файл с таким же концевым (базовым именем )и корневым именем (то без расширения )уже встречалось ранее, значит оно было меньше, поэтому предложите убрать его (с -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'?
0
28.01.2020, 04:44

Теги

Похожие вопросы