【问题标题】:how to use find command in adb shell如何在 adb shell 中使用 find 命令
【发布时间】:2012-10-26 08:12:20
【问题描述】:

我想检查我的 android 设备的目录中是否有某个文件。

我在 Windows 批处理中使用以下行

adb shell find /mnt/sdcard/koinoxrista -name Bill.txt

如果文件存在我想做一些事情,如果文件不存在我想做其他事情。

我该怎么做?

【问题讨论】:

    标签: android batch-file adb toybox


    【解决方案1】:

    adb shell 不支持查找命令。 此命令还将显示隐藏文件adb shell ls -laR | grep filename

    【讨论】:

    • 这不会给你文件路径,它只会报告它是否存在。为了获得路径,我会指示 grep 报告ls 爬取的每个目录,如下所示:adb shell ls -laR | grep -E "filename|:$"
    • @volpato,我已尝试使用您的建议,但仍然无法获得完整路径
    【解决方案2】:

    恐怕Android模拟器没有提供'find'程序。

    【讨论】:

    • 这完全正确 - android 不提供 find,并且直到最近(可能在撰写本文之后)才开始提供 grep,所以为什么要否决它?
    【解决方案3】:

    Android 6.0 (Mashmallow) 版本开始支持find 命令。

    这是因为从那时起它就包含了 Toybox。

    https://en.wikipedia.org/wiki/Toybox

    【讨论】:

      【解决方案4】:

      当您知道确切的文件名时,您无需使用任何额外的命令(如find)来查找它。只需使用内置的 shell 工具检查它是否存在:

      adb shell "[ -f /mnt/sdcard/koinoxrista/Bill.txt ] && echo 'found'"
      

      【讨论】:

      • 我安装了 BusyBox,在哪里可以找到查找小程序?