का उपयोग करके कई फ़ाइलों को खींचने का सबसे अच्छा तरीका क्या है
adb pull
/sdcard/
निम्नलिखित नाम के साथ मेरी 25 फाइलें हैं:
gps1.trace
gps2.trace
...
gps25.trace
वाइल्डकार्ड काम नहीं करता है:
adb pull /sdcard/gps*.trace .
का उपयोग करके कई फ़ाइलों को खींचने का सबसे अच्छा तरीका क्या है
adb pull
/sdcard/
निम्नलिखित नाम के साथ मेरी 25 फाइलें हैं:
gps1.trace
gps2.trace
...
gps25.trace
वाइल्डकार्ड काम नहीं करता है:
adb pull /sdcard/gps*.trace .
DDMS
ग्रहण के परिप्रेक्ष्य में फाइल एक्सप्लोरर की कोशिश की है और अपने sdcard से फ़ाइलों का चयन करने और pull
उन पर प्रदर्शन करने में सक्षम था । यदि आप ग्रहण का उपयोग नहीं करते हैं, तो डीडीएमएस एक अलग एसडीके उपकरण के रूप में उपलब्ध है।
monitor
कमांड महान काम करता है, में होना चाहिए <sdkdir>/tools
!
जवाबों:
आप उपयोग कर सकते हैं xargs
और adb shell ls
आदेश का परिणाम जो वाइल्डकार्ड स्वीकार करता है। इससे आप कई फाइल कॉपी कर सकते हैं। आमतौर पर adb shell ls
कमांड के आउटपुट में लाइन-फीड कंट्रोल वर्ण शामिल होते हैं जिन्हें आप उपयोग करके निकाल सकते हैं tr -d '\r'
।
उदाहरण:
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
फ़ाइल के बजाय एक निर्देशिका नाम प्राप्त कर सकते हैं और यह निर्देशिका को इसमें सभी फ़ाइलों के साथ खींच लेगा।
/ Sdcard / gpsTraces में अपने सभी जीपीएस ट्रैस खींचे
adb pull /sdcard/gpsTraces/ .
का उदाहरण adb pull
और adb push
पुनरावर्ती निर्देशिका के:
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
<- विफल
./adb pull /sdcard/
<- पुनरावर्ती कार्य करता है - अनुगामी स्लेश पर ध्यान दें
मार्च 2014 में Nexus 5 और adb के साथ परीक्षण किया गया।
आउटपुट को 'ls' से पार्स करना आमतौर पर एक बुरा विचार है। इसके बजाय, 'खोजें' का उपयोग करें।
adb shell 'find /sdcard/ -name "gps*.trace" -print0' | xargs -0 -n 1 adb pull
भले ही adb pull
कमांड ने दूरस्थ पैरामीटर के लिए फ़ोल्डर का नाम स्वीकार करना शुरू कर दिया है, फिर भी मैं tar
कमांड का उपयोग करना पसंद करता हूं । यह अधिक लचीलापन प्रदान करता है - फ़ाइल नाम पैटर्न (दोनों को शामिल और बाहर करना ), सिमिलिंक नियंत्रण, फ़ाइल अनुमतियों को संरक्षित करता है। Android 6.0 के बाद से आप बिल्ट-इन का उपयोग कर सकते हैं। इससे पहले आपको 3-पार्टी टूल्स का उपयोग करना था जैसे busybox
:
adb exec-out tar c sdcard/amazonmp3 > amazon.tar
/
अपने मार्ग में अग्रणी को छोड़ना सुनिश्चित करें ।
मैंने इसे विंडोज बॉक्स के लिए बनाया है, यह फाइलसिस्टम माउंट किए बिना वाइल्डकार्ड का उपयोग करके फ़ाइलों को स्थानांतरित करने के लिए बहुत उपयोगी है। आप इस स्क्रिप्ट को अपने रास्ते में कहीं और शामिल कर सकते हैं।
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
उदाहरण:
adbpull /sdcard/DCIM/Camera/IMG_2016*
यदि आप लिनक्स या मैक का उपयोग कर रहे हैं, तो Android डिबग ब्रिज के लिए एक FUSE फाइलसिस्टम का उपयोग करें
निर्देशिका पुल नए Android उपकरणों पर उपलब्ध है। (मुझे नहीं पता कि यह किस संस्करण से जोड़ा गया था, लेकिन नवीनतम ADT 21.1 पर इसका काम करना)
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)
डेविड के जवाब पर निर्माण, मुझे यह थोड़ा बेहतर लगता है:
adb shell ls /foo | tr -d '\r' | xargs -n1 adb pull
एक प्रकार से कम (बड़ा सौदा) टाइप होने के अलावा यह -r
एक स्थान में परिवर्तित नहीं होता है। यह एक महत्वपूर्ण अंतर है, जैसे कि आप करने की कोशिश करते हैं
adb shell ls /foo/myFile* | tr '\r' ' ' | xargs -i -n1 adb pull {} someDir
आपको त्रुटि मिलेगी
remote object '/foo/myFile1 ' does not exist
इसके बजाय आप यह कर सकते हैं, जो काम करेगा:
adb shell ls /foo/myFile* | tr -d '\r' | xargs -i -n1 adb pull {} someDir
मेरे मामले में वाइल्ड कार्ड काम करते हैं, मैं अपने डेस्कटॉप पर अपने वर्चुअल डिवाइस के व्हाट्सएप इमेज को आयात करने के लिए सरल स्क्रिप्ट का उपयोग कर रहा हूं
#! /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
एंड्रॉइड में, संबंधित अनुमतियों के साथ कुछ फ़ोल्डर हैं! कुछ फ़ोल्डर रूट या सिस्टम उपयोगकर्ता के हैं।
आप लोगों को "adb पुल" करने से पहले उन फ़ाइलों, फ़ोल्डरों की अनुमतियां बदल देनी चाहिए।
निम्नलिखित आदेश मदद कर सकते हैं:
adb shell
su
chmod -R 777 target_folder
exit
...
adb pull /.../target_folder/ . (current local folder)
adb
लेकिन डॉक्स सेpull
पूरी निर्देशिका खींचने के लिए इस्तेमाल किया जा सकता है ??? अगर ऐसा है और ये आपके खुद के ऐप द्वारा जनरेट की गई फाइलें हैं, तो क्यों न इन्हें एक उप-निर्देशिका में लिखें/sdcard/mygpsfiles
और फिर उपयोग करेंadb pull /sdcard/mygpsfiles
। क्या इससे काम हो जायेगा?