【问题标题】:shell list All Xcode xcworkspace and xcodeprojshell 列出所有 Xcode xcworkspace 和 xcodeproj
【发布时间】:2022-08-15 13:28:26
【问题描述】:

我想列出项目目录中的所有 xcworkspace 和 xcodeproj 文件。

我在下面写代码

#!/bin/bash

workspaceFile=\"xcworkspace\"
projectFile=\"xcodeproj\"

#listFiles 
path=$(pwd)

fileList=()

walk_dir () {
    for name in \"$path\"/*; do
        if [[ -d \"$name\" && (\"${name##*.}\" != ${projectFile} || \"${name##*.}\" != ${workspaceFile}) ]]; then
            path=$name
            walk_dir \"$name\"
        else 
            if [ \"${name##*.}\"x = ${workspaceFile}x ] || [ \"${name##*.}\"x = ${projectFile}x ];then
                fileList+=($name)
            fi
        fi
    done
}

walk_dir

for name in ${fileList[@]}; do
    echo $name
done

那没起效。

但是如果改变条件,如下所示

        if [[ -d \"$name\" && (\"${name##*.}\" != ${workspaceFile}) ]]; then
            path=$name
            walk_dir \"$name\"
        else 
            if [ \"${name##*.}\"x = ${workspaceFile}x ] || [ \"${name##*.}\"x = ${projectFile}x ];then
                fileList+=($name)
            fi
        fi

或者

        if [[ -d \"$name\" && (\"${name##*.}\" != ${projectFile}) ]]; then
            path=$name
            walk_dir \"$name\"
        else 
            if [ \"${name##*.}\"x = ${workspaceFile}x ] || [ \"${name##*.}\"x = ${projectFile}x ];then
                fileList+=($name)
            fi
        fi

它也有效。

我想保留过滤器 xcworkspace 和 xcodeproj。

有人可以帮助我吗?

  • find . -type f \\( -name \"xcworkspace\" -o -name \"xcodeproj\" \\) 可能是一个选项。
  • Xcode 不是只适用于 MacOS 吗?你如何在 Linux 上使用它?

标签: xcode bash macos shell unix


【解决方案1】:

最后,我自己找到了结果。

#!/bin/bash

workspaceFile="xcworkspace"
projectFile="xcodeproj"

path=$1
fileList=()

projectList () {
    for name in "$path"/*; do
        if [ -d "$name" ] && [ "${name##*.}"x = ${workspaceFile}x ]; then
            fileList+=(${name})
        elif [ -d "$name" ] && [ "${name##*.}"x = ${projectFile}x ]; then
            fileList+=(${name})
        elif [ -d "$name" ]; then
            path=$name
            projectList
        fi
    done
}


projectList


for name in ${fileList[@]}; do
    echo "xcode project: $name"
done

【讨论】:

    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多