删除重复的图片

删除重复的图片

我有的原始图像是 img.jpg。

如何删除 img.jpg1、img.jpg2、img.jpg3 等重复图片。我想保留扩展名为 .jpg 的图片。

谢谢

答案1

GUI 解决方案

  1. ctrl在 nautilus 中,使用+打开选择对话框S
  2. 键入*.jpg以选择所有带有 .jpg 扩展名的图像

在此处输入图片描述 在此处输入图片描述

  1. ctrl使用+ shift+反向选择i以选择没有 .jpg 扩展名的图像(这是您想要的)。

在此处输入图片描述

  1. 右键单击并选择Move to trash或直接按下delete键。
    从这里您还可以执行任何其他操作 - 压缩、剪切等。

答案2

find将命令与-regex-exec标志结合起来。在这个特定的例子中,-exec只需将所有重复图像移至垃圾箱,因此如果您愿意,仍然可以恢复其中任何一个。您可以稍后使用rm命令,或通过 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

答案3

bash非递归地使用:

shopt -s extglob nullglob
rm img.jpg+(?)

如果末尾只有数字:

rm img.jpg+([0-9])

递归地:

shopt -s globstar extglob nullglob
rm **/img.jpg+(?)

如果末尾只有数字:

rm **/img.jpg+([0-9])

这里我们使用了一些 shell 选项:

  • extglob将使我们能够匹配扩展的 glob 模式,例如+(?)将匹配任何字符的一个或多个出现。默认情况下,此功能应在交互式 shell 中启用。

  • nullglob如果未找到匹配项,则将导致空字符串

  • globstar将使我们能够使用递归搜索**

相关内容