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

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

The name of Folder1 and Folder2 remains constant and inside Folder2 I have Folder3, 4, 5 and so on.. 我想把所有的 jpeg 文件,而不是所有的文件(还有更多)使用 adb 到我的计算机工作目录。.

Every folder has 不同的号码 of jpeg files and other files and I tried using this:

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

但是没有用。 So uhmm how do I adb pull all files present in any folder of SD Card with a single command (single command because each folder has different number of files)

232888 次浏览

使用 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.

Specific Files/Folders using 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”文件,然后把它们从你的手机拉到工作目录。

目录拉可用于新的 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)

请尝试只给出从您想要拉文件的地方的路径 我刚从 Sdcard 那里拿到文件

adb pull sdcard/

不要给 *喜欢扩大搜索或过滤。 这是无效的。

just give adb pull sdcard/

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

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

记得要整理文件,否则你会弄得一团糟,或者根本不管用。

Yep, just use the trailing slash to recursively pull the directory. Works for me with Nexus 5 and current version of adb (March 2014).

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

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