【问题标题】:How to copy selected files from Android with adb pull如何使用 adb pull 从 Android 复制选定的文件
【发布时间】:2012-01-28 20:11:24
【问题描述】:

我正在尝试使用 adb pull 命令仅将某些文件 (jpg) 复制到我的 macbook。我试过“adb pull sdcard/mydir/*.jpg”,但它显然不能解释通配符。我怎样才能只复制 jpg 文件?如果有帮助,我已将手机植根。

【问题讨论】:

    标签: android adb


    【解决方案1】:

    至于短脚本,以下在我的 Linux 主机上运行

    #!/bin/bash
    HOST_DIR=<pull-to>
    DEVICE_DIR=/sdcard/<pull-from>
    EXTENSION="\.jpg"
    
    while read MYFILE ; do
        adb pull "$DEVICE_DIR/$MYFILE" "$HOST_DIR/$MYFILE"
    done < $(adb shell ls -1 "$DEVICE_DIR" | grep "$EXTENSION")
    

    “ls减一”让“ls”每行显示一个文件,引号允许文件名中有空格。

    【讨论】:

      【解决方案2】:

      使用正则表达式拉取多个文件:

      创建pullFiles.sh:

      #!/bin/bash
      HOST_DIR=<pull-to>
      DEVICE_DIR=/sdcard/<pull-from>
      EXTENSION=".jpg"
      
      for file in $(adb shell ls $DEVICE_DIR | grep $EXTENSION'$')
      do
          file=$(echo -e $file | tr -d "\r\n"); # EOL fix
          adb pull $DEVICE_DIR/$file $HOST_DIR/$file;
      done
      

      运行它:

      使其可执行:chmod +x pullFiles.sh

      运行它:./pullFiles.sh

      注意事项:

      • 原样,当文件名有空格时不起作用
      • 包含针对 Android 上的行尾 (EOL) 的修复,即“\r\n”

      【讨论】:

      • 在 Linux 上,osx 修复需要更改为 tr -d "\r"
      • 1) 这似乎忽略了文件名中有空格的情况。 2) grep 表达式未指定(. 未正确使用,应以 $ 结尾以匹配通配符 *.txt)
      • @ErickWong 那是一个对我有用的小sn-p,我认为分享它会很好!它确实当然涵盖所有情况,但可以随意编辑它,包括结尾字符$,以及带有空格的文件!
      • 仅在从 $EXTENSION$ 删除结尾美元符号后才为我工作
      • @dafnahaktana 第二个表示结束字符。它对我来说工作得很好,但我想单引号应该更安全。我更新了答案。
      【解决方案3】:

      您可以将文件移动到其他文件夹,然后拉出整个文件夹。

      adb shell mkdir /sdcard/tmp adb shell mv /sdcard/mydir/*.jpg /sdcard/tmp # 将你的 jpeg 移动到临时目录 adb pull /sdcard/tmp/ # 拉取这个目录(一定要把'/'放在最后) adb shell mv /sdcard/tmp/* /sdcard/mydir/ # 将它们移回 adb shell rmdir /sdcard/tmp #删除临时目录

      【讨论】:

      • 这对我不起作用。我尝试使用 adb pull /sdcard/TWRP/ TWRP 复制 TWRP 备份,它会创建一个 1kb .twrps 文件,仅此而已。
      • 为什么要将文件移动到另一个文件夹然后拉取它们?我只从原始文件夹中提取文件(最后带有“/”)并且它有效。
      • 这一举措让您可以挑选出 .jpg 文件。由于 shell mv 允许在文件路径中使用通配符,但 pull 不允许,因此您可以根据需要进行具体的移动,然后在将内容移回之前进行一般的 pull。
      • 这是一个挑出某些文件的好主意。为了让这个过程更简单,可以安装 ES-File 来移动和选择文件到另一个文件夹,这会让你的生活更轻松,然后只需调用 Michal 列出的 adb pull 命令来获取所有文件。
      猜你喜欢
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 2020-01-13
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      相关资源
      最近更新 更多