我如何adb拉出SD卡中存在的文件夹的所有文件

时间:2012-04-07 01:21:23

标签: android android-sdcard

我的SD卡中有一个文件夹: 的/ mnt / SD卡/ Folder1中/ FOLDER2 / Folder3 / *。JPG

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

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

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

但它没有用.. 所以我怎么用一个命令adb拉出SD卡的任何文件夹中的所有文件(单个命令,因为每个文件夹有不同的文件数)

7 个答案:

答案 0 :(得分:121)

使用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中的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”文件,并将它们从手机中拉到当前目录。

答案 1 :(得分:70)

新的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)

答案 2 :(得分:39)

请尝试仅提供您要从中提取文件的路径 我刚刚从sdcard获得了像

这样的文件

adb pull sdcard/

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

只需给出adb pull sdcard /

答案 3 :(得分:6)

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

答案 4 :(得分:2)

在Android 6上使用ADB版本1.0.32,您必须在要复制的文件夹后面/后面。 E.g adb pull "/sdcard/".

答案 5 :(得分:1)

如果您使用的jellybean刚启动cmd,请键入adb设备以确保您的可读性,输入adb pull sdcard / sdcard_(日期或额外的)< ---此文件需要事先在adb目录中生成。 PROFIT!

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

记得制作文件或者你要么弄得一团糟,要么就行不通。

答案 6 :(得分:0)

如果要从root设备中提取受限访问权限的目录,则需要以root用户身份重新启动adb:在提取之前键入adb root。否则,您会收到错误remote object '/data/data/xxx.example.app' does not exist