我有的原始图像是 img.jpg。
如何删除 img.jpg1、img.jpg2、img.jpg3 等重复图片。我想保留扩展名为 .jpg 的图片。
谢谢
答案1
答案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
将使我们能够使用递归搜索**