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$last
para-1
. -
find . -type f -name '*.png' -printf '%f
: encontre todos os arquivos no diretório atual cujo nome termine em.png
'sort -gz
e 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");
$s
define o delimitador de campo como$i
, que é necessário para processar corretamente os dados separados por NULL. -
[[ $s = $last ]] && rm "$i";
: a variávellast=$s
agora 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.