Minha versão de exiv2
(0.25 001900) perguntará interativamente o que fazer quando o nome do arquivo já existir.
exiv2: File './2013_06_19__14_03_13.jpg' exists. [O]verwrite, [r]ename or [s]kip?
Ao adicionar a opção -F
, ele adicionará automaticamente um% extra_1
(ou _2
etc) ao nome.
Renaming file to ./2013_06_19__14_01_53_1.jpg, updating timestamp
Se o comando for executado uma segunda vez, ele diz:
This file already has the correct name
e não faz nada, mas fica confuso se houver a parte _1
e irá renomear _2
. Ele irá alternar assim de maneira não destrutiva em cada execução. Você pode ignorar isso, se desejar, ou alterar seu padrão find
para ignorar arquivos que correspondam ao padrão de data com uma _
de peça.
Por exemplo, o padrão de expressão regular para o formato de data começa [0-9]{4}_[0-9]{2}_...
. Para simplificar, procurarei apenas uma combinação de 20 caracteres do conjunto 0..9
e _
, que é regex [0-9_]{20}
. Para isso, o sufixo de _
seguido por pelo menos 1 dígito para procurar é _[0-9]{1,}.jpg
. Como a regex precisa corresponder ao caminho inteiro, e não apenas ao nome da base, a regex final, incluindo o diretório, é .*/[0-9_]{20}_[0-9]{1,}.jpg
.
Então você pode usar um encontro como:
find . -regextype posix-extended ! -iregex '.*/[0-9_]{20}_[0-9]{1,}.jpg' -iname '*.jpg' ...