Bagaimana cara adb menarik SEMUA file dari folder yang ada di SD Card

110

Saya memiliki folder di Kartu SD saya sebagai: /mnt/sdcard/Folder1/Folder2/Folder3/*.jpg

Nama Folder1 dan Folder2 tetap konstan dan di dalam Folder2 saya memiliki Folder3, 4, 5 dan seterusnya .. Saya ingin menarik semua file jpeg daripada semua file (ada lebih) menggunakan adb ke direktori saya saat ini di komputer. .

Setiap folder memiliki jumlah file jpeg dan file lain yang berbeda dan saya mencoba menggunakan ini:

adb pull mnt/sdcard/Folder1/Folder2/Folder/*.jpg .

Tapi itu tidak berhasil .. Jadi uhmm bagaimana cara adb menarik semua file yang ada di folder SD Card dengan satu perintah (perintah tunggal karena setiap folder memiliki jumlah file yang berbeda)

riteshtch.dll
sumber
Apakah Anda menggunakan Linux atau Windows? Ini bisa kita atasi dengan skrip sederhana?
Jared Burrows
Hmm saya memiliki Android Developement Stuff terinstal di keduanya: Win7 dan juga Ubuntu .. jika ada solusi untuk keduanya maka bagus dan bagus ..! Namun kenyataannya saya hanya membutuhkannya untuk Ubuntu (diinstal sebagai VM) .. jadi uhmm ya saya di Ubuntu ..
riteshtch
bisakah Anda menandai jawaban yang benar untuk pertanyaan ini?
Jared Burrows

Jawaban:

143

File / Folder Tunggal menggunakan pull:

adb pull "/sdcard/Folder1"

Keluaran:

adb pull "/sdcard/Folder1"
pull: building file list...
pull: /sdcard/Folder1/image1.jpg -> ./image1.jpg
pull: /sdcard/Folder1/image2.jpg -> ./image2.jpg
pull: /sdcard/Folder1/image3.jpg -> ./image3.jpg
3 files pulled. 0 files skipped.

File / Folder Tertentu menggunakan finddari BusyBox:

adb shell find "/sdcard/Folder1" -iname "*.jpg" | tr -d '\015' | while read line; do adb pull "$line"; done;

Berikut penjelasannya:

adb shell find "/sdcard/Folder1" - use the find command, use the top folder
-iname "*.jpg"                   - filter the output to only *.jpg files
|                                - passes data(output) from one command to another
tr -d '\015'                     - explained here: http://stackoverflow.com/questions/9664086/bash-is-removing-commands-in-while
while read line;                 - while loop to read input of previous commands
do adb pull "$line"; done;         - pull the files into the current running directory, finish. The quotation marks around $line are required to work with filenames containing spaces.

Skrip akan mulai di folder atas dan secara rekursif turun dan menemukan semua file "* .jpg" dan menariknya dari telepon Anda ke direktori saat ini.

Jared Burrows
sumber
10
adb pull /sdcarduntuk menarik semuanya!
Ian Vaughan
@IanVaughan itu adalah perintah yang sering saya gunakan dan berfungsi untuk saya, tetapi saya berharap ada cara untuk menarik semuanya dari kartu sd tetapi mengecualikan salah satu sub jalur
GµårÐïåñ
Saya ingin tahu apakah Android punya tar? Sebuah terpal sederhana di atas ADB akan memungkinkan penarikan file, metadata, tetapi dengan pengecualian. Jika gzip / bzip2 juga ada di sana, maka terpal terkompresi akan tersedia :)
Mark K Cowan
Untuk versi modernadb Anda cukup menentukan direktori dan alat ini akan secara rekursif menarik semuanya untuk Anda
DirkyJerky
@ mark-k-cowan adb backup dengan shared (sdcard) banyak bug.
Smeterlink
72

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)
Palani
sumber
1
Saya mencoba ini, tetapi hanya menarik beberapa direktori. Tidak yakin apa kriterianya.
acjay
2
Jika Anda ingin menarik folder yang dimiliki oleh root , mulailah adbsesi root (menggunakan $ adb root).
MasterAM
jalankan perintah sebagai root seperti yang dikatakan @MasterAM! bekerja tanpa masalah! Bersulang!
Migisha
Folder @acjay Kosong dihilangkan. Ini juga berlaku untuk folder rekursif yang pada akhirnya kosong. Misalnya /sdcard/folder1/folder2akan mengakibatkan folder1dihilangkan jika folder2kosong dan tidak ada file lain di bawah folder1.
MDMower
40

Silakan coba dengan hanya memberikan jalur dari mana Anda ingin menarik file saya baru saja mendapat file dari sdcard seperti

adb pull sdcard/

JANGAN memberi * suka untuk memperluas pencarian atau untuk menyaring. contoh: adb pull sdcard / *. txt -> ini tidak valid.

berikan saja adb pull sdcard /

Ilavarasan
sumber
Ini adalah solusi yang jauh lebih bersih. Ini secara semantik lebih baik dan mempertahankan struktur direktori juga.
Mike
11
Perhatikan bahwa jejak / tidak mater.
adrin
Saya tidak perlu garis miring dengan adb versi 1.0.40
Variabel yang Menyedihkan
6

Ya, cukup gunakan garis miring untuk menarik direktori secara rekursif. Berfungsi untuk saya dengan Nexus 5 dan versi adb saat ini (Maret 2014).

Memposting sebagai tamu tamu
sumber
Saya tidak perlu garis miring dengan adb versi 1.0.40
Variabel yang Menyedihkan
Saya membutuhkan garis miring pada Android Debug Bridge versi 1.0.32 yang menjalankan Android Q di Google Pixel XL.
Rock Lee
2

Di Android 6 dengan ADB versi 1.0.32, Anda harus meletakkan / di belakang folder yang ingin Anda salin. Misalnyaadb pull "/sdcard/".

antimateri
sumber
Saya tidak perlu garis miring dengan adb versi 1.0.40
Variabel yang Menyedihkan
1

jika Anda menggunakan jellybean, cukup mulai cmd, ketik adb devices untuk memastikan Anda dapat dibaca, ketik adb pull sdcard / sdcard_ (tanggal atau tambahan) <--- file ini perlu dibuat di direktori adb terlebih dahulu. KEUNTUNGAN!

Di versi lain ketik adb pull mnt / sdcard / sdcard_ (tanggal atau ekstra)

Ingatlah untuk membuat file atau Anda akan berantakan atau tidak akan berfungsi.

EDward
sumber
1

Jika Anda ingin menarik direktori dengan akses terbatas dari perangkat yang di-rooting, Anda perlu memulai ulang adb sebagai root: ketik adb rootsebelum menarik. Jika tidak, Anda akan mendapatkan pesan kesalahanremote object '/data/data/xxx.example.app' does not exist

naXa
sumber