shell脚本检索工程未引用的图片并删除

这篇博客介绍如何通过shell脚本来查找并删除工程中未被引用的png和jpg图片。首先需要安装ack工具,然后使用find命令结合basename过滤图片文件名,接着用ack在源码中搜索图片引用,最后根据搜索结果判断是否删除未引用的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着项目的维护,工程中会多多少少有一部分compile bundle resources的图片文件没有在代码中引用,想要删除这些没用的文件,工作量巨大,想要手动删除几乎已经不可能,于是乎翻了一些脚本的贴子,写下了一段简单的脚本,废话不多说直接上源码。

ack="/Users/houyunpeng/bin/ack"

path="/Users/houyunpeng/Desktop/ios-jlc/Resources"
for i in $(find $path -name *.png -o -name *.jpg);do
#echo $i;
    file=$(basename -s .png $i | xargs basename -s @2x | xargs basename -s @3x)
    result=$($ack -i $file)
#    echo $result;
    if [ -z "$result" ];then
        echo $i;
    fi
done

首先需要你安装ack工具,一个非常轻量化的工具,个人觉得部分功能要比grep好用,安装方法可以参考ack官网

不想看英文的这里有个简单的安装方法,直接在终端输入一下命令就可以

curl https://beyondgrep.com/ack-2.22-single-file > ~/bin/ack && chmod 0755 ~/bin/ack

在这里,由于我的MacBook Air的根路径下安装了太多的工具,于是我把ack安装到了用户的根路径~/bin下,并在.bash_profile配置文件中配置了一个别名alias ack='/Users/houyunpeng/bin/ack'。

好了,核心工具已经就绪,接下来就要开始屠(删)杀(除)图片啦。

其实脚本很简单,

find $path -name *.png -o -name *.jpg 这句命令主要目的是为了找到所有的png和jpg格式的文件,具体格式可以根据你的具体需要而定,其输出的是图片文件的绝对路径,我们需要使用basename命令将图片文件名过滤出来

basename -s .png $i | xargs basename -s @2x | xargs basename -s @3x

这句话是过滤出所有的1x、2x、3x图片

找到具体某一个图片之后,我们需要使用ack命令来查找当前路径下的项目源码中有没有引用该图片

if [ -z "$result" ];then
        echo $i;
    fi

然后判断$ack -i $file我们搜索出来的结果中,有没有包含代码片段,如果含有代码片段择说明该图片是有引用的,如果没有则使用-z参数来判断参数是不是为空。

好啦,既然已经找到哪些文件没有使用,就可以尽情的删除啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值