使用拉动多个文件的最佳方法是什么
adb pull
我的/sdcard/
25个文件中包含以下名称:
gps1.trace
gps2.trace
...
gps25.trace
通配符不起作用:
adb pull /sdcard/gps*.trace .
使用拉动多个文件的最佳方法是什么
adb pull
我的/sdcard/
25个文件中包含以下名称:
gps1.trace
gps2.trace
...
gps25.trace
通配符不起作用:
adb pull /sdcard/gps*.trace .
DDMS
从eclipse的角度尝试了File Explorer,并且能够从sdcard中多选文件并对其执行操作pull
。如果您不使用Eclipse,则DDMS可作为单独的SDK工具使用。
monitor
命令效果很好,应该在<sdkdir>/tools
!
Answers:
您可以使用xargs
和adb shell ls
接受通配符的命令的结果。这使您可以复制多个文件。令人讨厌的是,该adb shell ls
命令的输出包含换行控制字符,您可以使用删除这些字符tr -d '\r'
。
例子:
adb shell 'ls sdcard/gps*.trace' | tr -d '\r' | xargs -n1 adb pull
adb shell 'ls /sdcard/*.txt' | tr -d '\r' | sed -e 's/^\///' | xargs -n1 adb pull
adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull
adb pull
可以接收目录名而不是at文件,它将拉目录中的所有文件。
在/ sdcard / gpsTraces中拉出所有gps跟踪
adb pull /sdcard/gpsTraces/ .
adb pull
和adb push
递归目录的示例:
C:\Test>adb pull /data/misc/test/ .
pull: building file list...
pull: /data/misc/test/test1/test2/test.3 -> ./test1/test2/test.3
pull: /data/misc/test/test1/test2/test.2 -> ./test1/test2/test.2
pull: /data/misc/test/test1/test2/test.1 -> ./test1/test2/test.1
pull: /data/misc/test/test1/test.3 -> ./test1/test.3
pull: /data/misc/test/test1/test.2 -> ./test1/test.2
pull: /data/misc/test/test1/test.1 -> ./test1/test.1
pull: /data/misc/test/test.3 -> ./test.3
pull: /data/misc/test/test.2 -> ./test.2
pull: /data/misc/test/test.1 -> ./test.1
9 files pulled. 0 files skipped.
0 KB/s (45 bytes in 0.093s)
C:\Test>adb push . /data/misc/test/
push: ./test1/test2/test.3 -> /data/misc/test/test1/test2/test.3
push: ./test1/test2/test.2 -> /data/misc/test/test1/test2/test.2
push: ./test1/test2/test.1 -> /data/misc/test/test1/test2/test.1
push: ./test1/test.3 -> /data/misc/test/test1/test.3
push: ./test1/test.2 -> /data/misc/test/test1/test.2
push: ./test1/test.1 -> /data/misc/test/test1/test.1
push: ./test.3 -> /data/misc/test/test.3
push: ./test.2 -> /data/misc/test/test.2
push: ./test.1 -> /data/misc/test/test.1
9 files pushed. 0 files skipped.
0 KB/s (45 bytes in 0.062s)
解析“ ls”的输出通常是一个坏主意。相反,请使用“查找”。
adb shell 'find /sdcard/ -name "gps*.trace" -print0' | xargs -0 -n 1 adb pull
即使adb pull
命令开始接受远程参数的文件夹名称,我还是更喜欢使用tar
命令。它提供了更大的灵活性-允许使用文件名模式(包括include和exclude),符号链接控制,保留文件权限。从Android 6.0开始,您可以使用内置的。在此之前,您必须使用第三方工具,例如busybox
:
adb exec-out tar c sdcard/amazonmp3 > amazon.tar
确保省略领导 /
路径中。
我已经为Windows盒创建了此文件,使用通配符传输文件而不挂载文件系统非常有用。您可以在路径env中的某个位置包含此脚本。
adbpull.bat
@echo off
setlocal enabledelayedexpansion
if %1.==. (
echo Wilcard parameter is required.
goto end
)
for /F "tokens=* USEBACKQ" %%F in (`adb shell ls %1`) do (
set text=%%F
set mfile=!text:~0,-1!
adb pull "!mfile!"
)
:end
endlocal
例:
adbpull /sdcard/DCIM/Camera/IMG_2016*
如果您使用的是Linux或Mac,则ADBFS是用于Android调试桥的FUSE文件系统
目录提取功能可在新的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)
基于David的答案,我发现这会稍微好一些:
adb shell ls /foo | tr -d '\r' | xargs -n1 adb pull
除了要少输入一个字符(很重要)以外,它不会将转换-r
成空格。这是一个很大的差异,就好像您尝试做
adb shell ls /foo/myFile* | tr '\r' ' ' | xargs -i -n1 adb pull {} someDir
你会得到错误的说
remote object '/foo/myFile1 ' does not exist
相反,您可以执行以下操作:
adb shell ls /foo/myFile* | tr -d '\r' | xargs -i -n1 adb pull {} someDir
以通配符为例,我一直在使用以下简单脚本将虚拟设备的Whatsapp图像导入到桌面中
#! /bin/bash
mkdir -p ~/Pictures/Pictures_adb
rm -f ~/Pictures/Pictures_adb/*
cd ~/Pictures/Pictures_adb
adb root
adb shell 'cp /data/media/0/WhatsApp/Media/WhatsApp\ Profile\ Photos/* /sdcard/Pictures/;exit'
adb pull /sdcard/Pictures
mv ~/Pictures/Pictures_adb/Pictures/* ~/Pictures/Pictures_adb/
rmdir ~/Pictures/Pictures_adb/Pictures
cd
adb
但是可以从文档pull
中提取整个目录???如果是这种情况,并且这些是您自己的应用程序生成的文件,那么为什么不将它们写到子目录中/sdcard/mygpsfiles
,然后使用adb pull /sdcard/mygpsfiles
。那行得通吗?