adb拉多个文件

hsz*_*hsz 83 android adb

使用多种文件的最佳方法是什么?

adb pull
Run Code Online (Sandbox Code Playgroud)

我有/sdcard/25个文件,名字如下:

gps1.trace
gps2.trace
...
gps25.trace
Run Code Online (Sandbox Code Playgroud)

通配符不起作用:

adb pull /sdcard/gps*.trace .
Run Code Online (Sandbox Code Playgroud)

小智 132

您可以使用接受通配符xargsadb 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
Run Code Online (Sandbox Code Playgroud)

  • 这是一个稍微改进的版本,可以处理文件名中的空格:https://github.com/sschuberth/dev-scripts/blob/master/android/pull_all.sh (4认同)
  • 它不起作用说*tr不被识别为内部或外部命令* (4认同)
  • 在我的情况下它尝试从android的根目录中拉出(正确获取的)文件名失败,解决它,我使用:`adb shell"ls -d/mnt/sdcard/Pictures/Screenshots/*"| tr'\ r'''| xargs -n1 adb pull` (3认同)

Ofi*_*zon 94

adb pull 可以接收目录名而不是文件,它将拉出包含其中所有文件的目录.

在/ sdcard/gpsTraces中拉出所有gps跟踪

adb pull /sdcard/gpsTraces/ . 
Run Code Online (Sandbox Code Playgroud)

递归目录的示例adb pulladb 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)
Run Code Online (Sandbox Code Playgroud)

  • @kakyo它适用于我的子文件夹.检查你有谷歌最新的亚行.(我正在使用1.0.29) (3认同)
  • @Stan:除非你在"adb pull [-a] <remote> ... <local>"中使用"-a"选项,根据帮助保留文件时间戳和模式. (3认同)

小智 25

./adb pull /sdcard < - 失败

./adb pull /sdcard/ < - 以递归方式工作 - 记下尾部斜杠

2014年3月下载的Nexus 5和adb测试版.


小智 5

即使adb pull命令开始接受远程参数的文件夹名称,我还是更喜欢使用tar命令。它提供了更大的灵活性-允许使用文件名模式(包括includeexclude),符号链接控制,保留文件权限。从Android 6.0开始,您可以使用内置的。在此之前,您必须使用第三方工具,例如busybox

adb exec-out tar c sdcard/amazonmp3 > amazon.tar
Run Code Online (Sandbox Code Playgroud)

确保省略/路径中的引导。


car*_*eol 5

我已经为Windows框创建了这个,使用通配符传输文件而不安装文件系统非常有用.您可以在路径环境中的某处包含此脚本.

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
Run Code Online (Sandbox Code Playgroud)

例: adbpull /sdcard/DCIM/Camera/IMG_2016*


ish*_*ael 5

解析“ ls”的输出通常是一个坏主意。相反,请使用“查找”。

adb shell 'find /sdcard/ -name "gps*.trace" -print0' | xargs -0 -n 1 adb pull
Run Code Online (Sandbox Code Playgroud)

为什么不应该解析ls的输出