如何删除xcode项目中的所有正常png

时间:2014-06-27 03:42:25

标签: xcode bash png

我想删除所有名称没有“@ 2x”的图像,我想编写一个shell脚本来完成此操作。这就是我的工作:

#!/bin/bash

dir="/Users/me/Workspace/"
cd $dir
all_pngs=`find . -name "*.png" | sort -u`
for png in $all_pngs
do
    #    echo "$png"
    #get the dirname
    dirname=`dirname $png`
    #get the filename without dir
    filename=`basename $png`
    #get name without suffix
    name=`echo "$filename" | cut -d '.' -f1`
    realname=`echo "$name" | grep -v "@2x"`
    if [ -n $realname ]; then
        echo "$realname"
    fi

done

我的问题是我不知道如果没有“@ 2x”我怎么能找到这个名字。

2 个答案:

答案 0 :(得分:1)

我不确定你要对你的其余部分做什么,但这样的事情应该有效

find /Users/me/Workspace/ -type f -name '*.png' \! -name '*@2x*' -exec echo rm '{}' +

当您确信自己想要什么时,请移除echo

由于! exp在查找中的优先级高于测试和操作之间隐含的-a,因此上述内容被视为

find /Users/me/Workspace/ (-type f) AND (-name '*.png') AND (! -name '*@2x*') AND (-exec echo rm '{}' +)

答案 1 :(得分:0)

你在for循环中使用了许多不需要的操作,这些操作不是必需的(但是它的用途完全是什么?)。您需要在for..loop中使用简单的逻辑,如下所示。或者在一个句子中你可以使用@BroSlow给出的很好的答案

您可以检查您的文件名是否包含“@ 2x”或不包含

if [[ $png = *@2x* ]] //Yes it contain "@2x"
then
    echo "File name contain @2x keep as it is."
else
    //remove file // rm -f $png
fi

使用grep

if grep -o "@2x" <<<"$png" >/dev/null
then
    echo "File name contain @2x keep as it is."
else
    //remove file // rm -f $png
fi