如何使用 adb pull 从 Android 复制选定文件

我正试图使用 adb pull 命令将某些文件(jpg)复制到我的 Macbook 上。我试过"adb pull sdcard/mydir/*.jpg",但它显然不能解释通配符。怎样才能只复制 jpg 文件? 如果有帮助的话,我已经将手机连根拔起。

解决办法

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

预览 adb shell mkdir /sdcard/tmp adb shell mv /sdcard/mydir/.jpg /sdcard/tmp # 将您的图片移至临时目录 adb pull /sdcard/tmp/ # 拉出此目录(确保在最后加上 '/' 号) adb shell mv /sdcard/tmp/ /sdcard/mydir/ # 将它们移回去 adb shell rmdir /sdcard/tmp # 删除临时目录

评论(4)

使用 regex 提取多个文件:

创建 pullFiles.sh

#!/bin/bash
HOST_DIR=
DEVICE_DIR=/sdcard/
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"
评论(5)

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

#!/bin/bash
HOST_DIR=
DEVICE_DIR=/sdcard/
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"每行显示一个文件,引号允许文件名包含空格。

评论(0)