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
我是 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