Minha imagem original é img.jpg.
Como posso remover imagens duplicadas que são img.jpg1, img.jpg2, img.jpg3. Quero manter a imagem que possui extensão .jpg.
Obrigado
Responder1
Solução GUI
- No nautilus, abra a caixa de diálogo de seleção usando ctrl+S
- Digite
*.jpg
para selecionar todas as imagens com extensão .jpg
- Inverta a seleção usando ctrl+ shift+ ipara selecionar aqueles sem a extensão .jpg (que é o que você deseja).
- Clique com o botão direito e escolha
Move to trash
ou apenas pressione a deletetecla.
A partir daqui você também pode fazer o que quiser - comprimir, cortar, etc.
Responder2
Combine o find
comando com os sinalizadores -regex
e -exec
. Neste exemplo específico, -exec
basta pegar todas as imagens duplicadas e movê-las para a lixeira, para que você ainda possa recuperar qualquer uma delas, se desejar. Mais tarde, você pode usar rm
o comando ou limpar o lixo através da GUI
testerdir:$ ls
img.jpg img.jpg1 img.jpg2 img.jpg3
testerdir:$ find . -regex ".*\.jpg[1-9]+" -print -exec mv -t $HOME/.local/share/Trash/ {} +
./img.jpg1
./img.jpg3
./img.jpg2
testerdir:$ ls $HOME/.local/share/Trash
expunged/ files/ img.jpg1 img.jpg2 img.jpg3 info/
testerdir:$ ls
img.jpg
Responder3
Usando bash
, de forma não recursiva:
shopt -s extglob nullglob
rm img.jpg+(?)
Se você tiver apenas dígitos no final:
rm img.jpg+([0-9])
Recursivamente:
shopt -s globstar extglob nullglob
rm **/img.jpg+(?)
No caso de apenas dígitos no final:
rm **/img.jpg+([0-9])
Aqui usamos algumas opções de shell:
extglob
nos permitirá combinar padrões globais estendidos, por exemplo,+(?)
corresponderá a uma ou mais ocorrências de qualquer caractere. Isso deve ser habilitado em um shell interativo por padrão.nullglob
resultará em uma string nula se nenhuma correspondência for encontradaglobstar
nos permitirá pesquisar recursivamente usando**