如何获得带有文件名的文件的完整路径?

时间:2019-09-24 09:40:31

标签: macos shell adb

[解决方案]

感谢@oguzismail和@stylo,找到了解决方案。在find命令中,我为 2> / dev / null 修改了 2>&1 并删除了grep命令,但是我发现问题在于它检索到了两个不同的路径(因为Android Studio是在两个不同的路径上生成了两个具有相同名称的不同apk)。

仅获取我想要的apk的路径,我为我的find命令添加了一个“过滤器”,因此解决方案是:

find / -path ./intermediates -prune -o -name app-ipd-debug.apk 2>/dev/null

使用文件夹./intermediates-prune -o的名称,我可以获得所需的路径。

我看到了解决方法in this post

[问题]

我正在做一个Shell脚本,该脚本构建一个android项目,安装apk并在设备中进行一些其他配置,例如set owner设备所有者(是一个信息亭模式的应用程序)和更多东西。

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

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

adb install -t -r $APK_PATH

我试图用 find 命令获取APK_PATH,但是它检索到很多我不知道如何处理的输出,命令是:

find / -name apk-file-name.apk

显示了很多带有“ 权限被拒绝”和“ 不允许操作”的输出,并在其中一行显示了apk路径(这是一个我不知道如何得到,只有这个结果)

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

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

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

有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

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

如果尚未启用它,可以通过运行以下命令来实现

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

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