Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于删除重复文件的Bash脚本_Bash_File_Scripting_Duplicates_Delete File - Fatal编程技术网

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

用于删除重复文件的Bash脚本,bash,file,scripting,duplicates,delete-file,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 .... 换句话说,我想在目录中循环并删除所有带有附加编号的图像文件。任何指导都将不胜感激。使用正则表达式和find命令() 此命令搜索扩展名为“.jpg”的所有文件,扩展名以“IMG_2;”开头,并将数字从0连接到999,然后查找空格和0到9的数字

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

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

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

使用正则表达式和
find
命令()

此命令搜索扩展名为“.jpg”的所有文件,扩展名以“IMG_2;”开头,并将数字从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 {} \;
删除此文件之前,请使用命令查看正则表达式是否正确


如果您在prepend
sudo

前遇到一些权限问题,您可能只需要:

rm *\ *
假设所有重复文件中都有空间,而原始文件中没有一个有空间。有点复杂,但更安全:

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

复制品确实都有空格。非常合法,谢谢!