用于删除重复文件的Bash脚本

时间:2015-03-24 02:35:08

标签: bash file scripting duplicates delete-file

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

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

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

3 个答案:

答案 0 :(得分:0)

你可能只能逃脱:

rm *\ *

假设所有重复文件都有空格,并且没有任何原件。有点复杂,但更安全:

rm IMG_???\ ?.jpg

如果您愿意。无论如何,没有必要的循环。

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:-1)

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

此命令搜索扩展名为“.jpg”且以“IMG_”开头的所有文件,这些文件与0到999之间的数字连接,并查找空格和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之前有一些权限问题。