मैं एसडी कार्ड में मौजूद फ़ोल्डर की सभी फाइलों को कैसे खींचता हूं?


110

मेरे पास एसडी कार्ड में एक फ़ोल्डर है: /mnt/sdcard/Folder1/Folder2/Folder3/*.jpg

Folder1 और Folder2 का नाम स्थिर रहता है और Folder2 के अंदर मेरे पास Folder3, 4, 5 और इसी तरह है .. मैं सभी jpeg फाइलों को सभी फाइलों के बजाय खींचना चाहता हूं (वहां और भी हैं) adb का उपयोग करके कंप्यूटर पर मेरी वर्तमान निर्देशिका। ।

प्रत्येक फ़ोल्डर में अलग-अलग संख्या की jpeg फाइलें और अन्य फाइलें होती हैं और मैंने इसका उपयोग करने की कोशिश की है:

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

लेकिन यह काम नहीं किया .. तो उह मैं कैसे एक कार्ड के साथ किसी भी फ़ोल्डर में मौजूद सभी फ़ाइलों को खींचता हूं कमांड (एकल कमांड क्योंकि प्रत्येक फ़ोल्डर में अलग-अलग संख्या में फाइलें होती हैं)


क्या आप लिनक्स या विंडोज में हैं? क्या हम एक साधारण स्क्रिप्ट के साथ हल कर सकते हैं?
जारेड बुर

हम्म मेरे पास एंड्रॉइड डेवलपमेंट स्टाफ़ दोनों में स्थापित है: Win7 और साथ ही उबंटू .. अगर दोनों के लिए समाधान है तो अच्छी तरह से और अच्छा ..! लेकिन वास्तव में मुझे इसे केवल उबंटू के लिए (वीएम के रूप में स्थापित) की आवश्यकता है .. तो
उह उबाउ हां

क्या आप इस प्रश्न का सही उत्तर दे सकते हैं?
जेरेड बुरोज

जवाबों:


143

एकल फ़ाइल / फ़ोल्डर का उपयोग pull:

adb pull "/sdcard/Folder1"

आउटपुट:

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.

विशिष्ट फ़ाइलों / फ़ोल्डर का उपयोग कर findसे BusyBox:

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

यहाँ एक स्पष्टीकरण है:

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.

स्क्रिप्ट शीर्ष फ़ोल्डर में शुरू होगी और पुनरावृत्ति से नीचे जाएगी और सभी "* .jpg" फाइलों को ढूंढेगी और उन्हें अपने फोन से वर्तमान निर्देशिका में खींचेगी।


10
adb pull /sdcardसभी को खींचने के लिए!
इयान वघन

@IanVaughan एक ऐसा कमांड है जिसका मैं अक्सर उपयोग करता हूं और मेरे लिए काम करता है, लेकिन मैं चाहता हूं कि एसडी कार्ड से सब कुछ खींचने का एक तरीका है लेकिन उप रास्तों में से एक को बाहर करें
GµårÐïåñ

मुझे आश्चर्य है कि अगर Android है tar? ADB पर एक साधारण टारपीप फाइल, मेटाडाटा के बहुत बारीक-बारीक खींचने की अनुमति देता है, लेकिन बहिष्करण के साथ। अगर gzip / bzip2 वहां पर भी है, तो एक संपीड़ित टारपीप उपलब्ध होगा :)
Mark K Cowan

आप के आधुनिक संस्करणों के लिए adbबस डायरेक्टरी निर्दिष्ट कर सकते हैं और टूल आपके लिए सब कुछ पुन: खींच देगा
DirkyJerky

साझा (sdcard) के साथ @ मार्क-के-गवन अदब बैकअप काफी बग है।
13

72

निर्देशिका पुल नए 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)

1
मैंने यह कोशिश की, लेकिन इसने केवल कुछ निर्देशिकाओं को खींचा। निश्चित नहीं है कि इसका मापदंड क्या था।
०14

2
यदि आप रूट के स्वामित्व वाले फ़ोल्डर को खींचना चाहते हैं , तो adbरूट सेशन (उपयोग करके $ adb root) शुरू करें।
मास्टरम

रूट को रूट करें जैसे @MasterAM ने कहा! बिना किसी समस्या के काम किया! चियर्स!
मिगिशा

@ संजय खाली फ़ोल्डर छोड़े गए हैं। यह पुनरावर्ती फ़ोल्डरों का भी सच है जो अंततः खाली हैं। उदाहरण के लिए , खाली होने पर /sdcard/folder1/folder2परिणाम नहीं folder1दिया जाएगा folder2और कोई अन्य फ़ाइलें नहीं हैं folder1
एमडीएमवर

40

कृपया केवल उस पथ को देने का प्रयास करें जहाँ से आप उन फ़ाइलों को खींचना चाहते हैं जिन्हें मुझे सिर्फ sdcard से फ़ाइलें मिली हैं

adb pull sdcard/

खोज को व्यापक बनाने या फ़िल्टर करने के लिए * न दें। ex: adb pull sdcard / *। txt -> यह अमान्य है।

बस अदब पुल sdcard दे /


यह एक बहुत क्लीनर समाधान है। यह शब्दार्थ रूप से बेहतर है और निर्देशिका संरचना को भी संरक्षित करता है।
माइक

11
ध्यान दें कि अनुगामी मैटर / करता है
एड्रिन

मुझे एडीबी संस्करण 1.0.40 के साथ ट्रेलिंग स्लैश की आवश्यकता नहीं थी
वेरिएबल

6

हां, केवल निर्देशिका को फिर से खींचने के लिए अनुगामी स्लैश का उपयोग करें। मेरे लिए Nexus 5 और adb के वर्तमान संस्करण (मार्च 2014) के साथ काम करता है।


मुझे एडीबी संस्करण 1.0.40 के साथ ट्रेलिंग स्लैश की आवश्यकता नहीं थी
वेरिएबल

मुझे Google Pixel XL पर Android Q चल रहे Android डिबग ब्रिज संस्करण 1.0.32 पर ट्रेलिंग स्लैश की आवश्यकता थी।
रॉक ली

2

ADB संस्करण 1.0.32 के साथ एंड्रॉइड 6 पर, आपको उस फ़ोल्डर को पीछे रखना होगा जिसे आप कॉपी करना चाहते हैं। उदाहरण के लिएadb pull "/sdcard/".


मुझे एडीबी संस्करण 1.0.40 के साथ ट्रेलिंग स्लैश की आवश्यकता नहीं थी
वेरिएबल

1

यदि आपके जेलीबीन का उपयोग करने से सीएमडी शुरू होता है, तो अपने रीडेबल को सुनिश्चित करने के लिए एडीबी डिवाइस टाइप करें, एडीबी पुल sdcard / sdcard_ (तिथि या अतिरिक्त) <--- इस फ़ाइल को पहले से एडीबी निर्देशिका में बनाने की आवश्यकता है। फायदा!

अन्य संस्करणों में, adb pull mnt / sdcard / sdcard_ (तारीख या अतिरिक्त) टाइप करें

फ़ाइल या अपने या तो गड़बड़ करने के लिए याद रखें या यह काम नहीं करेगा।


1

यदि आप एक निर्देशिका को रूट किए गए डिवाइस से प्रतिबंधित एक्सेस के साथ खींचना चाहते हैं, तो आपको adb को रूट के रूप में पुनरारंभ करने की आवश्यकता है: adb rootपुल से पहले टाइप करें । अन्यथा आपको एक त्रुटि मिलेगीremote object '/data/data/xxx.example.app' does not exist

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.