Apa cara terbaik untuk menarik banyak file menggunakan
adb pull
Saya memiliki /sdcard/
25 file saya dengan nama berikut:
gps1.trace
gps2.trace
...
gps25.trace
Karakter pengganti tidak berfungsi:
adb pull /sdcard/gps*.trace .
Apa cara terbaik untuk menarik banyak file menggunakan
adb pull
Saya memiliki /sdcard/
25 file saya dengan nama berikut:
gps1.trace
gps2.trace
...
gps25.trace
Karakter pengganti tidak berfungsi:
adb pull /sdcard/gps*.trace .
DDMS
perspektif gerhana dan dapat memilih banyak file dari sdcard saya dan melakukan pull
pada mereka. Jika Anda tidak menggunakan eclipse, DDMS tersedia sebagai alat SDK terpisah.
monitor
perintah berfungsi dengan baik, harus masuk <sdkdir>/tools
!
Jawaban:
Anda dapat menggunakan xargs
dan hasil dari adb shell ls
perintah yang menerima wildcard. Ini memungkinkan Anda untuk menyalin banyak file. Secara menjengkelkan, output dari adb shell ls
perintah tersebut menyertakan karakter kontrol baris-feed yang dapat Anda hapus menggunakan tr -d '\r'
.
Contoh:
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
dapat menerima nama direktori alih-alih pada file dan itu akan menarik direktori dengan semua file di dalamnya.
Tarik semua jejak gps Anda di / sdcard / gpsTraces
adb pull /sdcard/gpsTraces/ .
Contoh dari adb pull
dan adb push
direktori rekursif:
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)
./adb pull /sdcard
<- gagal
./adb pull /sdcard/
<- bekerja secara rekursif - perhatikan garis miring di belakangnya
Diuji dengan Nexus 5 dan adb yang diunduh Maret 2014.
Mengurai keluaran dari 'ls' umumnya merupakan ide yang buruk. Sebagai gantinya, gunakan 'temukan'.
adb shell 'find /sdcard/ -name "gps*.trace" -print0' | xargs -0 -n 1 adb pull
Meskipun adb pull
perintah mulai menerima nama folder untuk parameter jarak jauh, saya masih lebih suka menggunakan tar
perintah. Ini memberikan lebih banyak fleksibilitas - memungkinkan pola nama file ( termasuk dan mengecualikan ), kontrol symlink, mempertahankan izin file. Sejak Android 6.0 Anda dapat menggunakan file bawaan. Sebelumnya Anda harus menggunakan alat pihak ketiga seperti busybox
:
adb exec-out tar c sdcard/amazonmp3 > amazon.tar
Pastikan untuk menghilangkan petunjuk /
di jalan Anda.
Saya telah membuat ini untuk kotak Windows, Sangat berguna untuk mentransfer file menggunakan wildcard tanpa memasang sistem file. Anda dapat menyertakan skrip ini di suatu tempat di jalur 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
Contoh:
adbpull /sdcard/DCIM/Camera/IMG_2016*
ADBFS a FUSE Filesystem untuk Android Debug Bridge jika Anda menggunakan linux atau mac
Tarik direktori tersedia di alat android baru. (Saya tidak tahu dari versi mana itu ditambahkan, tetapi berfungsi pada ADT 21.1 terbaru)
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)
berdasarkan jawaban David, saya merasa ini sedikit lebih baik:
adb shell ls /foo | tr -d '\r' | xargs -n1 adb pull
Selain itu menjadi satu karakter yang kurang untuk diketik (masalah besar) itu tidak mengubahnya -r
menjadi spasi. Ini adalah perbedaan yang signifikan, seolah-olah Anda mencoba melakukannya
adb shell ls /foo/myFile* | tr '\r' ' ' | xargs -i -n1 adb pull {} someDir
Anda akan mendapatkan kesalahan mengatakan
remote object '/foo/myFile1 ' does not exist
Sebagai gantinya Anda dapat melakukan ini, yang akan berhasil:
adb shell ls /foo/myFile* | tr -d '\r' | xargs -i -n1 adb pull {} someDir
Kartu liar berfungsi dalam kasus saya, saya telah menggunakan skrip sederhana berikut untuk mengimpor Gambar Whatsapp dari perangkat virtual saya ke desktop saya
#! /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
PowerShell:
adb shell ls /sdcard/gps*.trace | foreach {adb pull $_}
Di Android, ada beberapa folder dengan izin terkait! Beberapa folder milik root- atau pengguna sistem.
Kalian harus mengubah hak akses file, folder sebelum melakukan "adb pull".
Perintah berikut dapat membantu:
adb shell
su
chmod -R 777 target_folder
exit
...
adb pull /.../target_folder/ . (current local folder)
adb
tetapi dari dokumenpull
dapat digunakan untuk menarik seluruh direktori ??? Jika demikian dan ini adalah file yang dihasilkan oleh aplikasi Anda sendiri, mengapa tidak menuliskannya ke sub-direktori seperti/sdcard/mygpsfiles
dan kemudian menggunakanadb pull /sdcard/mygpsfiles
. Apakah itu akan berhasil?