如何从Xcode项目中删除未使用的图像?

时间:2015-10-22 08:39:34

标签: ios xcode bash cocoa terminal

我想从XCode项目中删除所有未使用的图像,为了做到这一点,我使用以下脚本:

#!/bin/sh
PROJ=`find . -name '*.xib’ -o -name '*.[mh]'`

for png in `find . -name '*.png'`
do
name=`basename $png`
if ! grep -q $name $PROJ; then
rm –Rf "$png"
echo "$png is not referenced"
fi
done

上面的脚本运行正常并删除了项目中未在“ .xib ”中引用的所有图像,但是有一个问题。

问题

该脚本还会删除“ .m ”文件中引用的图像。 (以编程方式设置的图像)

请求

您能告诉我如何在搜索中添加“ .m ”和“ .xib ”文件。

PROJ=`find . -name '*.xib’ -o -name '*.[mh]'`

1 个答案:

答案 0 :(得分:1)

首先,不是您使用rm -Rf删除单个图片。小心!这会以递归方式移除而不强制它,因此它可能存在风险并删除您不想要的内容。可能更好地说rm

你的脚本非常整洁有序。为了使其更加健壮,在变量中使用引号总是好的。这样,它还将支持带空格的名称。也就是说,如果你想删除名为“a b.png”的文件,并且名称存储在变量$png中,说rm $png你运行rm a b.png,那么它会尝试删除ab.png

在完成所有这些介绍之后,让我们关注这里的具体问题。

您好像正在寻找以.xibm结尾的文件。 find . -name '*.xib’ -o -name '*.[mh]'语法似乎没问题,但使用regex in find可能会更好。

find -type f -regex '.*\.\(xib\|m|h\)'

最后,您使用for循环来查看find的结果。请注意,您也可以说:

while IFS= read -r png;
do
    # things with "$png"
done < <(find ...)

但我不会在此处提出任何其他建议,因为我并未真正遵循这些.xib.png文件的逻辑。如果你能展示一个例子,我会更新我的答案。