Bash 删除重复文件的脚本

Bash script for deleting duplicate files

我是 bash 脚本编写的新手,但我相信这是删除给定目录中具有如下名称的重复图像文件的最佳方法:

IMG_151.jpg
IMG_151 2.jpg
IMG_151 3.jpg
IMG_152.jpg
IMG_152 2.jpg
IMG_152 3.jpg
....

换句话说,我想遍历目录并删除所有带有附加编号的图像文件。任何指导将不胜感激。

使用正则表达式和 find 命令 (http://unixhelp.ed.ac.uk/CGI/man-cgi?find)。

此命令搜索所有扩展名为“.jpg”且以 "IMG_" 开头并与 0 到 999 之间的数字相连的文件,并查找 space 和 0 到 9 之间的数字。

find . -regextype sed -regex ".*/IMG_[0-999][[:space:]][0-9]*.jpg"

如果要删除此文件,请添加 rm 命令:

find . -regextype sed -regex ".*/IMG_[0-999][[:space:]][0-9]*.jpg" -exec rm -rf {} \;

在删除这个文件之前使用命令查看正则表达式是否正确。

如果您遇到一些权限问题,请添加 sudo.

你也许可以逃脱:

rm *\ *

假设所有重复文件中都有 space,而原始文件中有 none。有点复杂,但更安全:

rm IMG_???\ ?.jpg

如果你愿意。无论如何,不​​需要循环。

首先要确定的是,ls 看看正则表达式找到了什么:

ls IMG_[0-9][0-9][0-9]\ [0-9].jpg

然后如果它准确你可以删除它们:

rm IMG_[0-9][0-9][0-9]\ [0-9].jpg