Если вы ' для Linux или иным образом иметь доступ к инструментам GNU, вы можете сделать это:
last=-1; find . -type f -name '*.png' -printf '%f\0' | sort -nz |
while read -d '' i; do
s=$(stat -c '%s' "$i");
[[ $s = $last ]] && rm "$i";
last=$s;
done
last = -1
: установите переменную $ last
на -1
]. находят. -type f -name '* .png' -printf '% f \ 0'
: найти все файлы в текущем каталоге, имя которых заканчивается на .png
и выведите их имя, за которым следует символ NULL . sort -gz
: сортировать \ 0
-разделенный ввод ( -z
) численно ( -n
). В результате получается отсортированный список имен файлов. при чтении -d '' i; do
: прочитать список имен файлов. -d ''
устанавливает разделитель полей на \ 0
, который необходим для правильной обработки данных, разделенных NULL. s = $ (stat -c '% s' "$ i");
: переменная $ s
теперь содержит размер текущего файла ( $ i
). [[$ s = $ last]] && rm "$ i";
: если размер текущего файла совпадает с размером последнего файла, удалите файл. last = $ s
: установить $ last
равным текущему размеру файла. Теперь, если следующий файл имеет такой же размер, предыдущий шаг удалит его.