120

我的 SD 卡中有一个文件夹: /mnt/sdcard/Folder1/Folder2/Folder3/*.jpg

Folder1 和 Folder2 的名称保持不变,在 Folder2 内我有 Folder3、4、5 等等。我想使用 adb 将所有 jpeg 文件而不是所有文件(还有更多)拉到计算机上的当前目录。 .

每个文件夹都有不同数量的 jpeg 文件和其他文件,我尝试使用它:

adb pull mnt/sdcard/Folder1/Folder2/Folder/*.jpg .

但它没有工作..所以,我如何使用单个命令 adb 拉取 SD 卡任何文件夹中存在的所有文件(单个命令,因为每个文件夹有不同数量的文件)

4

7 回答 7

163

单个文件/文件夹使用pull

adb pull "/sdcard/Folder1"

输出:

adb pull "/sdcard/Folder1"
pull: building file list...
pull: /sdcard/Folder1/image1.jpg -> ./image1.jpg
pull: /sdcard/Folder1/image2.jpg -> ./image2.jpg
pull: /sdcard/Folder1/image3.jpg -> ./image3.jpg
3 files pulled. 0 files skipped.

find使用from 的特定文件/文件夹BusyBox

adb shell find "/sdcard/Folder1" -iname "*.jpg" | tr -d '\015' | while read line; do adb pull "$line"; done;

这是一个解释:

adb shell find "/sdcard/Folder1" - use the find command, use the top folder
-iname "*.jpg"                   - filter the output to only *.jpg files
|                                - passes data(output) from one command to another
tr -d '\015'                     - explained here: http://stackoverflow.com/questions/9664086/bash-is-removing-commands-in-while
while read line;                 - while loop to read input of previous commands
do adb pull "$line"; done;         - pull the files into the current running directory, finish. The quotation marks around $line are required to work with filenames containing spaces.

脚本将从顶部文件夹开始并递归地向下查找所有“*.jpg”文件并将它们从手机中拉到当前目录。

于 2012-04-08T04:41:23.097 回答
74

目录拉取可在新的 android 工具上使用。(我不知道它是从哪个版本添加的,但它适用于最新的 ADT 21.1)

adb pull /sdcard/Robotium-Screenshots
pull: building file list...
pull: /sdcard/Robotium-Screenshots/090313-110415.jpg -> ./090313-110415.jpg
pull: /sdcard/Robotium-Screenshots/090313-110412.jpg -> ./090313-110412.jpg
pull: /sdcard/Robotium-Screenshots/090313-110408.jpg -> ./090313-110408.jpg
pull: /sdcard/Robotium-Screenshots/090313-110406.jpg -> ./090313-110406.jpg
pull: /sdcard/Robotium-Screenshots/090313-110404.jpg -> ./090313-110404.jpg
5 files pulled. 0 files skipped.
61 KB/s (338736 bytes in 5.409s)
于 2013-03-09T17:50:16.997 回答
44

请尝试仅提供您想要提取文件的路径我刚刚从 sdcard 获取文件,例如

adb pull sdcard/

不要给*喜欢扩大搜索或过滤掉。例如:adb pull sdcard/*.txt--> 这是无效的。

只要给adb pull sdcard/

于 2013-03-12T19:18:09.107 回答
6

是的,只需使用尾部斜杠递归地拉目录。适用于 Nexus 5 和当前版本的 adb(2014 年 3 月)。

于 2014-03-11T10:54:37.527 回答
3

在带有 ADB 版本 1.0.32 的 Android 6 上,您必须将 / 放在要复制的文件夹后面。例如adb pull "/sdcard/".

于 2016-09-01T04:05:08.803 回答
2

如果你想从有根设备中拉出一个访问受限的目录,你需要以根用户身份重新启动 adb:adb root在拉取之前键入。否则你会得到一个错误说remote object '/data/data/xxx.example.app' does not exist

于 2017-09-02T21:49:54.707 回答
1

如果您使用 jellybean 只是启动 cmd,键入 adb devices 以确保您的可读性,键入 adb pull sdcard/ sdcard_(日期或额外) <---此文件需要事先在 adb 目录中创建。利润!

在其他版本中,键入 adb pull mnt/sdcard/sdcard_(日期或额外)

记住要制作文件,否则你会弄得一团糟,或者它不会工作。

于 2013-11-04T05:10:26.500 回答