Se você está no Linux ou tem acesso a ferramentas GNU, você pode fazer isso:
last=-1; find . -type f -name '*.png' -printf '%flast=-1; find . -type f -name '*.png' -printf '%f%pre%' | sort -nz |
while read -d '' i; do
s=$(stat -c '%s' "$i");
[[ $s = $last ]] && rm "$i";
last=$s;
done
' | sort -nz |
while read -d '' i; do
s=$(stat -c '%s' "$i");
[[ $s = $last ]] && rm "$i";
last=$s;
done
Explicação
-
last=-1: defina a variável$lastpara-1. -
find . -type f -name '*.png' -printf '%f: encontre todos os arquivos no diretório atual cujo nome termine em.png'sort -gze imprima seu nome, seguido do caractere NULL . -
: sort-z-n- entrada separada (while read -d '' i; do) numericamente (-d ''). Isso resulta em uma lista classificada de nomes de arquivos. -
: leia a lista de nomes de arquivos. Os=$(stat -c '%s' "$i");$sdefine o delimitador de campo como$i, que é necessário para processar corretamente os dados separados por NULL. -
[[ $s = $last ]] && rm "$i";: a variávellast=$sagora contém o tamanho do arquivo atual ($last). - %code% : se o tamanho do arquivo atual for igual ao tamanho do último arquivo, exclua o arquivo.
- %code% : defina %code% para o tamanho do arquivo atual. Agora, se o próximo arquivo tiver o mesmo tamanho, o passo anterior irá apagá-lo.