অ্যাডবি একাধিক ফাইল টানুন


87

একাধিক ফাইল ব্যবহার করে টানানোর সর্বোত্তম উপায় কী

adb pull

আমার নীচে /sdcard/নাম সহ 25 টি ফাইল রয়েছে:

gps1.trace
gps2.trace
...
gps25.trace

ওয়াইল্ডকার্ড কাজ করে না:

adb pull /sdcard/gps*.trace .

4
আমি ব্যবহার করি না adbতবে ডকগুলি থেকে pullপুরো ডিরেক্টরিটি টানতে ব্যবহার করা যেতে পারে ??? যদি তা হয় এবং এগুলি আপনার নিজের অ্যাপ্লিকেশন দ্বারা উত্পন্ন ফাইলগুলি হয় তবে কেন সেগুলি সাব-ডিরেক্টরিতে লিখতে হবে না /sdcard/mygpsfilesএবং তারপরে ব্যবহার করুন adb pull /sdcard/mygpsfiles। কাজ করবে?
স্কোনঙ্ক

4
বিকল্পভাবে, আমি স্রেফ DDMSগ্রহনের দৃষ্টিকোণে ফাইল এক্সপ্লোরার চেষ্টা করেছি এবং আমার এসডকার্ড থেকে ফাইলগুলি বহু-নির্বাচন করতে এবং pullসেগুলি সম্পাদন করতে সক্ষম হয়েছি । আপনি যদি গ্রহনটি ব্যবহার না করেন তবে ডিডিএমএস পৃথক এসডিকে সরঞ্জাম হিসাবে উপলব্ধ।
স্কোনঙ্ক

monitorকমান্ড দুর্দান্ত কাজ করে, থাকা উচিত <sdkdir>/tools!
সন্তোষ কুমার

উত্তর:


142

আপনি ব্যবহার করতে পারেন 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

আসলে এগুলি হ'ল ক্যারেজ রিটার্ন যা অবশ্যই ফিল্টার করা উচিত, তবে একটি অস্পষ্ট ইস্যুতে সঠিক ধারণা
ক্রিস স্ট্রাটন

4
এখানে একটি সামান্য উন্নত সংস্করণ যা ফাইলের নামগুলিতে ফাঁকা স্থান পরিচালনা করতে পারে: github.com/sschuberth/dev-scriptts/blob/master/android/…
sschuberth

এফওয়াইআই: উইন্ডোজ এবং ডস ক্যারেজ-রিটার্ন / লাইন-ফিড জোড়া (যেমন "\ n \ r" নয়) জন্য "\ r \ n" ব্যবহার করে।
BrainSlugs83

4
আমার ক্ষেত্রে এটির সমাধানের জন্য অ্যান্ড্রয়েডের মূল ডিরেক্টরি থেকে adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull
ফাইলটির

4
টিআর অভ্যন্তরীণ বা বাহ্যিক কমান্ড হিসাবে স্বীকৃত নয়
সানক্যাচার

101

adb pull ফাইলের পরিবর্তে ডিরেক্টরি নাম পেতে পারে এবং এটি এতে সমস্ত ফাইল সহ ডিরেক্টরি টানবে।

আপনার সমস্ত জিপিএস ট্রেসকে / এসডিকার্ড / জিপিএসট্রেসগুলিতে টানুন

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)

4
@ কাকিয়ো এটি আমার জন্য সাবফোল্ডারগুলির জন্য কাজ করে। গুগল থেকে আপনার সর্বশেষতম এডিবি আছে কিনা তা পরীক্ষা করুন। (আমি 1.0.29 ব্যবহার করছি)
লুজন

হ্যাঁ, আমি দেখেছি এটি শেষ পর্যন্ত খালি খালি ফোল্ডারের জন্য কাজ করে। আমার কিছু খালি ফোল্ডার ছিল যা টানেনি। এছাড়াও, মনে হচ্ছে যে "ধাক্কা" অ-পুনরাবৃত্ত?
kakyo

@ কাকিয়ো আমি আমার উত্তরে পুনরাবৃত্তাকার টান এবং ধাক্কা দিয়ে আউটপুট যুক্ত করেছি। খালি ফোল্ডারগুলি সম্পর্কে আপনি সঠিক, সেগুলি টানা বা ধাক্কা খায় না।
অফির লুজন

4
সাবধান: ADB টানার মাধ্যমে ফাইলগুলি তাদের মূল পরিবর্তিত তারিখটি হারাবে।
স্ট্যান

4
@ স্ট্যান: আপনি যদি না "-a" বিকল্পটি "অ্যাডাব্লু টান [-a] <কমে যাওয়া> ... <লোকাল>" হিসাবে ব্যবহার করেন না, যা সহায়তা অনুসারে ফাইলের টাইমস্ট্যাম্প এবং মোড সংরক্ষণ করে।
মরিচা গিয়ার

27

./adb pull /sdcard <- ব্যর্থ

./adb pull /sdcard/ <- পুনরাবৃত্তভাবে কাজ করে - পিছনের স্ল্যাশটি নোট করুন

Nexus 5 এর সাথে পরীক্ষিত এবং মার্চ ২০১৪ এডবি ডাউনলোড হয়েছে।


4
আমার জন্য এটি চূড়ান্ত স্ল্যাশ ছাড়াই পুনরাবৃত্তভাবে কাজ করেছে, অ্যাডবি সংস্করণ 1.0.32
অ্যান্টোনিও

আমাকে আমার উক্তিটি ফিরিয়ে নেওয়া দরকার কারণ @ অ্যান্টোনিও সঠিক।
শায়ান

8

'Ls' থেকে আউটপুট পার্স করা সাধারণত একটি খারাপ ধারণা। পরিবর্তে, 'অনুসন্ধান' ব্যবহার করুন।

adb shell 'find /sdcard/ -name "gps*.trace" -print0' | xargs -0 -n 1 adb pull

আপনার এলএস এর আউটপুটটি কেন পার্স করা উচিত নয়


আমার মেশিনে আমার অ্যাডবি করার জন্য পুরো পথটি ব্যবহার করা দরকার, তবে অন্যথায় এটি দুর্দান্ত কাজ করেছে!
ড্যান জে

এই উত্তরটি আসলে বেশ স্মার্ট। ভাল করেছ!
ডারথ এগ্রিগিয়াস

6

যদিও adb pullকমান্ড রিমোট প্যারামিটারের ফোল্ডারের নাম গ্রহণ করতে শুরু করেছে, তবুও আমি tarকমান্ডটি ব্যবহার করতে পছন্দ করি । এটি আরও নমনীয়তা সরবরাহ করে - ফাইলের নামের ধরণগুলির জন্য (উভয় অন্তর্ভুক্ত এবং বাদ দেওয়া ), সিমলিংক নিয়ন্ত্রণ, ফাইল অনুমতি সংরক্ষণ করে allows Android 6.0 যেহেতু আপনি একটি অন্তর্নির্মিত ব্যবহার করতে পারেন। এর আগে আপনার তৃতীয় পক্ষের সরঞ্জামগুলি ব্যবহার করতে হয়েছিল busybox:

adb exec-out tar c sdcard/amazonmp3 > amazon.tar

/আপনার পথে অগ্রণীকে বাদ দিতে ভুলবেন না ।


ওহ, এটি কাজ করে না। tar -tvf আমাকে বলেছে যে ফলাফলটি একটি আর্কাইভের মতো দেখাচ্ছে না। আচ্ছা ভালো.
themuddler

খুব শক্তিশালী উপায়! তবে সমস্যাটি হ'ল ত্রুটি / সতর্কতা যেমন "টার: সদস্যের নাম থেকে নেতৃস্থানীয় '/' অপসারণ" আউটপুট ফাইলে যুক্ত হয়। কীভাবে এটি নির্মূল করবেন জানেন না।
x'ES

আমি আউটপুটে 1.5KB ফাইল পাই।
শায়ান

5

আমি এটি উইন্ডোজ বাক্সগুলির জন্য তৈরি করেছি, ফাইল সিস্টেমটি মাউন্ট না করে ওয়াইল্ডকার্ড ব্যবহার করে ফাইল স্থানান্তর করা খুব দরকারী। আপনি এই স্ক্রিপ্টটি আপনার enভির কোথাও অন্তর্ভুক্ত করতে পারেন।

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*


4

দুর্ভাগ্যক্রমে আমি সাইগউইনের সাথে উইন্ডোজ ব্যবহার করছি। তবে আমাকে এটি মনে রাখতে হবে - খুব আকর্ষণীয় সমাধান!
এইচএসজেড

3

ডিরেক্টরি টান নতুন অ্যান্ড্রয়েড সরঞ্জামগুলিতে উপলব্ধ। (কোন সংস্করণ থেকে এটি যুক্ত করা হয়েছিল তা আমি জানি না, তবে এটি সর্বশেষ 21 এডিটিতে কাজ করছে)

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)

2

ডেভিড এর উত্তর উপর ভিত্তি করে, আমি এটি কিছুটা ভাল বলে মনে করি

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 

0

ওয়াইল্ড কার্ডগুলি আমার ক্ষেত্রে কাজ করে, আমি আমার ডেস্কটপে আমার ভার্চুয়াল ডিভাইসের হোয়াটসঅ্যাপ চিত্র আমদানি করার জন্য নিম্নলিখিত সাধারণ স্ক্রিপ্টটি ব্যবহার করছি

#! /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

আপনি অ্যান্ড্রয়েডে সিপির জন্য ওয়াইল্ডকার্ড ব্যবহার করেন এবং হোস্টকে টানতে না, এজন্য এটি কার্যকর হয়। দুর্দান্ত বিকল্প, যদিও / এসডিকার্ডে অনুলিপি করা / অতিরিক্ত মেমোরি খরচ হয় এবং প্রাইভেট ফাইলগুলি এসডকার্ডে ফাঁস করে।
ব্যবহারকারী 905686


-3

অ্যান্ড্রয়েডে, সম্পর্কিত অনুমতি সহ কিছু ফোল্ডার রয়েছে! কিছু ফোল্ডার মূল- বা সিস্টেম ব্যবহারকারীর অন্তর্ভুক্ত।

আপনার ছেলেরা "অ্যাডবি পুল" করার আগে সেই ফাইলগুলি, ফোল্ডারগুলির অনুমতিগুলি পরিবর্তন করা উচিত।

নিম্নলিখিত আদেশগুলি সাহায্য করতে পারে:

adb shell
su
chmod -R 777 target_folder
exit
...
adb pull /.../target_folder/ . (current local folder)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.