Я конвертировал все свои домашние видео в HEVC, и иногда файлы оказывались меньше, а иногда - нет. В настоящее время я сравниваю все видео файлы вручную, и это занимает вечность.
Мне было интересно, есть ли сценарий, который может проверить 2 папки и удалить больший из 2 файлов и оставить меньший.
В конце концов, я делаю это для экономии места. Я делаю все свои преобразования в Ubuntu 17.04 CLI, поэтому сценарий bash был бы предпочтительнее, но я не являюсь сценаристом.
Я бы использовал 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'?