如何使用adb shell列出安卓手机中的所有文件?

111

我刚试着为我的安卓手机写一个Bash Shell脚本。
当我想要列出在我的安卓手机上的所有文件时,我发现安卓终端不支持find命令。
因此,我想知道哪种方式是遍历sdcard文件的最佳方法?


4
请注意,在安全的Android设备上,shell用户缺少许多文件和目录的访问权限。在作为root运行的ADB的模拟器或工程设备上,则可以访问这些文件和目录。 - Chris Stratton
我知道。但我只想访问SD卡的文件。我认为这不需要root权限。无论如何,谢谢! - friddle
5个回答

165

我可能错了,但是对我来说 "find -name __" 运行得很好。(也许只是我的手机。) 如果你只想列出所有文件,可以尝试

adb shell ls -R /

尽管如此,您可能需要root权限。

编辑:

正如其他答案所建议的那样,可以像这样使用lsgrep

adb shell ls -Ral yourDirectory | grep -i yourString

例如。

adb shell ls -Ral / | grep -i myfile

-i 是忽略大小写的选项。/ 是根目录。


2
大多数官方发布的Android设备没有find命令,尽管那些具有自定义ROM或其他busybox安装的设备可能会有。 - Chris Stratton
1
我的手机无法获取root权限!对此我非常抱歉。如果我获得了root权限,我将安装Busybox。Busybox是非常有用的工具。 - friddle
如果你只想要SD卡,将此命令中的/替换为您系统上SD卡的挂载点,那么不,您不需要以root身份运行它。 - Chris Stratton
如果您的手机没有 root 权限,您可以使用 adb shell ls /storage 或者 adb shell ls -R --color=always /storage 命令来列出可读目录下的内容。 - mchid

31

打开命令提示符,输入 adb shell,然后按回车键。 输入 ls 查看文件列表。


在DOS提示符下,adb shell ls -R > junk列出所有文件并将结果放入文件junk中,然后您可以通过记事本或其他编辑它,并查看比您想要的更多内容,但也包括您的文件! - DSlomer64

4

只是为了添加完整的命令:

adb shell ls -R | grep filename

这实际上是在Android上非常快速的查找


2
这不会给你文件路径,它只会报告文件是否存在。要获取路径,我会指示grep还报告ls爬行的每个目录,就像这样:adb shell ls -laR | grep -E "filename|:$" - volpato
1
我喜欢使用 ls -lrta - john Smith

3
这个命令还会显示文件是否已隐藏: adb shell ls -laR | grep 文件名

2
一些安卓手机内置了Busybox。很难找到。
检查Busybox是否存在的方法:
ls -lR / | grep busybox

如果你知道文件在哪里,你需要一些读写空间。尝试使用闪存驱动器或SD卡。

cd /sdcard
ls -lR / >lsoutput.txt

上传到您的计算机。上传文件。获取一些文本编辑器。搜索busybox。将看到文件所在的目录。

busybox find /sdcard -iname 'python*'

为了更方便访问busybox,您可以采取以下措施:

cd /sdcard
ln -s /where/ever/busybox/is  busybox
/sdcard/busybox find /sdcard -iname 'python*'

或者你想放在任何其他地方。

R


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接