Cara menyalin file yang dipilih dari Android dengan adb pull

Saya mencoba menggunakan perintah adb pull untuk menyalin hanya file tertentu (jpg) ke macbook saya. Saya mencoba "adb pull sdcard/mydir/*.jpg" tetapi tampaknya tidak'tidak menafsirkan wildcard. Bagaimana saya bisa mendapatkan hanya file jpg yang disalin? Saya telah melakukan rooting ponsel jika itu membantu.

Larutan

Anda dapat memindahkan file Anda ke folder lain dan kemudian menarik seluruh folder.

adb shell mkdir /sdcard/tmp
adb shell mv /sdcard/mydir/*.jpg /sdcard/tmp # pindahkan jpeg anda ke dir sementara
adb pull /sdcard/tmp/ # tarik direktori ini (pastikan untuk meletakkan '/' di akhir)
adb shell mv /sdcard/tmp/* /sdcard/mydir/ # pindahkan mereka kembali
adb shell rmdir /sdcard/tmp # menghapus direktori sementara
Komentar (4)

Tarik beberapa file menggunakan regex:

Buat 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

Jalankan:

Buatlah itu dapat dieksekusi: chmod +x pullFiles.sh

Jalankan: ./pullFiles.sh

Catatan:

  • seperti apa adanya, tidak akan berfungsi ketika nama file memiliki spasi
  • termasuk perbaikan untuk end-of-line (EOL) di Android, yang merupakan " \r\n &"
Komentar (5)

Mengenai skrip pendek, yang berikut ini berjalan pada host Linux saya

#!/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 minus one" memungkinkan "ls" menampilkan satu file per baris, dan tanda kutip mengizinkan spasi dalam nama file.

Komentar (0)