【问题标题】:How to remove unused Images from Xcode Project?如何从 Xcode 项目中删除未使用的图像?
【发布时间】:2015-10-22 08:39:33
【问题描述】:

我想从 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]'`

【问题讨论】:

    标签: ios xcode bash cocoa terminal


    【解决方案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 文件的逻辑。如果你能展示一个例子,我会更新我的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 2013-04-06
      • 1970-01-01
      相关资源
      最近更新 更多