Ubuntu 22系统下清理WordPress缩略图:如何排除特定图标文件实现批量删除
Ubuntu 22系统下清理WordPress缩略图:如何排除特定图标文件实现批量删除
嘿,这个场景我太熟悉了——WordPress给每张图生成一堆不同尺寸的缩略图,时间久了备份体积直接爆炸!你原来的思路没问题,就是差个排除特定图标文件的规则,我给你两种靠谱的解决方案:
方法一:用正则负向前瞻精准匹配(简洁版)
GNU Find支持PCRE正则(需要加-P参数),我们可以用负向前瞻断言来排除那些你不想删的图标前缀:
先测试查找(确认不会误删)
find . -P -regex '^\./(?!favicon|apple-touch-icon|mstile|android-chrome).*-[0-9]+x[0-9]+\.(png|jpg|webp)' -print0 | xargs -0 ls
执行删除(确认没问题后再运行)
find . -P -regex '^\./(?!favicon|apple-touch-icon|mstile|android-chrome).*-[0-9]+x[0-9]+\.(png|jpg|webp)' -print0 | xargs -0 rm -f
正则说明:
^\./:匹配当前目录下的文件路径开头(?!favicon|apple-touch-icon|mstile|android-chrome):负向前瞻,意思是后面的内容不能以这些前缀开头.*-[0-9]+x[0-9]+\.(png|jpg|webp):就是你原来用来匹配WordPress缩略图的规则,确保只带-数字x数字后缀的图片
方法二:用-name排除规则(直观版,新手友好)
如果觉得正则有点绕,也可以用Find的! -name参数直接排除指定前缀的文件,逻辑更清晰:
先测试查找
find . -type f \( -name "*-[0-9]*x[0-9]*.png" -o -name "*-[0-9]*x[0-9]*.jpg" -o -name "*-[0-9]*x[0-9]*.webp" \) ! -name "favicon-*" ! -name "apple-touch-icon-*" ! -name "mstile-*" ! -name "android-chrome-*" -print0 | xargs -0 ls
执行删除
find . -type f \( -name "*-[0-9]*x[0-9]*.png" -o -name "*-[0-9]*x[0-9]*.jpg" -o -name "*-[0-9]*x[0-9]*.webp" \) ! -name "favicon-*" ! -name "apple-touch-icon-*" ! -name "mstile-*" ! -name "android-chrome-*" -print0 | xargs -0 rm -f
命令说明:
-type f:只查找文件(避免误删目录)\( ... \):把多个图片格式的匹配规则括起来,用-o(或)连接! -name "xxx-*":排除所有以指定前缀开头的文件,比如favicon-、apple-touch-icon-等
小提示
不管用哪种方法,一定要先运行查找命令确认结果,确保没有包含你想保留的文件,再执行删除操作。另外用-print0和xargs -0是为了兼容文件名含空格、特殊字符的情况,避免命令出错。
备注:内容来源于stack exchange,提问作者AJ Tatum
相关产品推荐
相关产品推荐

