Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何获取具有文件名的文件的完整路径?_Macos_Shell_Adb - Fatal编程技术网

Macos 如何获取具有文件名的文件的完整路径?

Macos 如何获取具有文件名的文件的完整路径?,macos,shell,adb,Macos,Shell,Adb,[解决方案] 多亏了@oguzismail和@stylo,我找到了解决方案。在find命令中,我修改了2>&1 for 2>/dev/null并删除了grep命令,但我发现问题是它检索了我两个不同的路径,因为Android studio在两个不同的路径中生成了两个同名的不同apk 为了只获取所需apk的路径,我为find命令添加了一个过滤器,因此解决方案是: find / -path ./intermediates -prune -o -name app-ipd-debug.apk 2>/

[解决方案]

多亏了@oguzismail和@stylo,我找到了解决方案。在find命令中,我修改了2>&1 for 2>/dev/null并删除了grep命令,但我发现问题是它检索了我两个不同的路径,因为Android studio在两个不同的路径中生成了两个同名的不同apk

为了只获取所需apk的路径,我为find命令添加了一个过滤器,因此解决方案是:

find / -path ./intermediates -prune -o -name app-ipd-debug.apk 2>/dev/null
使用文件夹名./intermediates和-prune-o,我可以得到我想要的路径

我看到了解决办法

[问题]

我正在做一个shell脚本,构建一个android项目,安装apk,并在设备中进行更多的配置,比如set owner device owner是一个kiosk模式的应用程序和其他一些东西

现在我正在尝试动态构建项目并将apk文件安装到设备中,但它无法正常工作

我尝试将完整路径作为变量放入shell脚本中,这可以使用命令adb install安装应用程序:

adb install -t -r $APK_PATH
我尝试使用find命令获取APK_路径,但它检索了很多我不知道如何处理的输出,该命令是:

find / -name apk-file-name.apk
显示了许多权限被拒绝和操作不被允许的输出,其中一行显示了apk路径,这是我不知道如何获得的路径,只有这个结果

我尝试使用grep过滤结果,但它不起作用

find / -name apk-file-name.apk 2>&1 | grep -v "Operation not permitted"

有什么帮助吗?

您可以使用locate命令在文件系统中查找文件

如果您还没有启用它,可以通过运行以下命令来实现

sudo launchctl load-w/System/Library/LaunchDaemons/com.apple.locate.plist


几分钟内您将无法使用它,因为它将索引所有内容,稍后您可以使用locate file_name.apk查找您要查找的文件

搜索/查找文件根本不是一个好主意,我想你应该详细说明一下,但当我尝试使用终端获取APK_路径时,我无法做到这一点。在这里得到一个好的答案。如果你坚持使用find,将stderr重定向到/dev/null,比如2>/dev/null,而不是用grepI解析它。我正在尝试你的解决方案,效果很好,但它检索到了两条不同的路径,一条是即时运行android studio编译路径,另一条是我想要的路径。有可能得到一个具体的?。我不太熟悉shell脚本,所以这对我来说并不容易:太好了,我不知道,也许你可以通过它的路径选择你想要的脚本??我找到了解决方案。非常感谢@Oguzismail这可能是一个很好的解决方案,但我希望避免任何安装或额外要求,因为此脚本将用于简化多个设备中应用程序的配置和安装,因此我尝试避免运行脚本以外的任何其他操作。但是非常感谢!明白了,那么我猜您可以按照上面oguz的建议将错误的输出发送到/dev/null。我找到了我想要的解决方案。非常感谢@stylo
find / -name apk-file-name.apk 2>&1 | grep -v "Operation not permitted"|"Permission denied"