如何使用adb.exe搜索文件?

时间:2013-06-17 13:14:16

标签: android adb

Unix / Linux包含用于搜索文件的“find”命令,但我不知道android中的哪个命令可用于搜索文件。请举个例子。

6 个答案:

答案 0 :(得分:43)

您可能无法在所有设备上找到findgrep,所以可能您的安全赌注是

   $ adb shell ls -lR | grep filename_you_want

在Linux / OSX上,或

   > adb shell ls -lR | find "filename_you_want"
在Windows上

答案 1 :(得分:20)

由于findgrep未在我使用的设备上安装,我使用以下内容:

adb shell ls -R / >tree.txt

之后,我可以使用我喜欢的任何软件(例如notepad ++或grep)在我的电脑上搜索文件tree.txt。

答案 2 :(得分:5)

find在我的设备上对我无效。似乎没有安装!

然而,这种方式对我有用:

adb shell

(然后在shell中)

ls -laR | grep filename_you_want

希望这有帮助。

答案 3 :(得分:4)

这是一个应该在zsh和bash中运行的小脚本。它会模拟您在Android设备上运行find /时可能会看到的内容:

adb shell ls -R / |
    while read line
    do
            line=$(echo $line | tr -d '\r')

            if [[ "$line" =~ ^/.*:$ ]]
            then
                    dir=${line%:}

            elif [[ "$line" = "opendir failed, Permission denied" ]]
            then
                    echo "find: $dir: Permission denied"

            else
                if [[ "$dir" = "/" ]]; then dir=""; fi

                echo "$dir/$line"
            fi
    done

因为它在降序之前列出了所有直接子目录,所以输出有点乱序(例如/system会立即列出,但/system/media不显示很久以后)。根据您的需要,您可以在脚本末尾拍摄| sort -u,但它应该可以满足您的所有基本grep需求。

答案 4 :(得分:3)

某些Android设备不包括find中的grep$PATH。但是,它们可能包括busybox。 (根据我的经验,他们中的大多数人都可以使用busybox)。所以你可以按照以下方式使用它们:

  

adb shell

然后

  

busybox找到。 " file.txt的"

或类似的东西

希望它会有所帮助。

答案 5 :(得分:0)

其他答案对我不起作用,因为它们要么没有提供我正在查找的文件的路径,要么返回了太多文件名,以至于没有用。

对我来说,以下使用busybox起作用:

adb shell busybox find / -name <your_file_name.here> 2>/dev/null

/告诉find命令从根目录搜索。但是您可以使用.来从当前目录搜索。像这样:

adb shell busybox find . -name <your_file_name.here> 2>/dev/null

2>/dev/null使权限被拒绝的响应安静,否则我会收到很多响应,并阻塞屏幕。