ADB тянуть несколько файлов

Каков наилучший способ вытащить несколько файлов, используя

adb pull

У меня на/sdcard/ 25 файлов со следующим именем:

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

Подстановочный знак не работает:

adb pull /sdcard/gps*.trace .
 Santosh Kumar05 сент. 2013 г., 14:41
monitor команда отлично работает, должна быть в<sdkdir>/tools!
 Squonk17 июн. 2012 г., 23:35
В качестве альтернативы, я только что попробовал Проводник вDDMS перспектива затмения и был в состоянии выбрать несколько файлов из моей SDCard и выполнитьpull на них. Если вы не используете eclipse, DDMS доступен как отдельный инструмент SDK.
 Squonk17 июн. 2012 г., 23:25
Я не используюadb но из документовpull можно использовать, чтобы вытащить весь каталог ??? Если это так, и это файлы, созданные вашим собственным приложением, то почему бы не записать их в подкаталог, такой как/sdcard/mygpsfiles а затем использоватьadb pull /sdcard/mygpsfiles, Будет ли это работать?

Ответы на вопрос(11)

Даже еслиadb pull команда начала принимать имя папки для удаленного параметра, я все еще предпочитаю использоватьtar команда. Это обеспечивает большую гибкость - позволяет использовать шаблоны имен файлов (обаinclude а такжеexclude), управление символическими ссылками, сохраняет права доступа к файлам. Начиная с Android 6.0 вы можете использовать встроенный. До этого вам приходилось использовать сторонние инструменты, такие какbusybox:

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

Убедитесь, что опущены ведущие/ на вашем пути.

 23 мая 2017 г., 08:52
Очень сильный путь! Но проблема заключается в ошибках / предупреждениях, таких как «tar: удаление ведущих» / / apos; из имен участников & quot; добавлено в выходной файл. Не знаю, как это устранить.
 18 февр. 2013 г., 12:08
О, это не сработало. tar -tvf говорит мне, что результат не похож на архив tar. Ну что ж.

Вместо этого используйте «найти».

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

Почему вы не должны анализировать вывод команды ls

 06 авг. 2018 г., 12:18
Это должен быть принятый ответ.

adb pull может получить имя каталога, а не в файл, и он будет тянуть каталог со всеми файлами в нем.

Извлеките все ваши GPS-трассировки в / SDCard / GPS-трасс

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)
 30 окт. 2012 г., 20:51
Но это, похоже, не работает для подпапок в нем.
 31 окт. 2012 г., 22:09
Да, я обнаружил, что в конце концов он работает для непустых папок. У меня было несколько пустых папок, которые не были извлечены. Кроме того, кажется, что "push" нерекурсивный?
 31 окт. 2012 г., 13:24
@kakyo Это работает для подпапок для меня. проверьте, что у вас последняя версия ADB от Google. (Я использую 1.0.29)
 27 авг. 2016 г., 13:52
@Stan: если вы не используете & quot; -a & quot; параметр, как в "adb pull [-a] & lt; remote & gt; ... & lt; local & gt;", который согласно справке сохраняет временную метку и режим файла.
 20 февр. 2016 г., 10:10
Осторожно: при извлечении ADB файлы теряют свою первоначальную дату изменения.

ADBFS файловая система FUSE для Android Debug Bridge если вы используете Linux или Mac

 hsz17 июн. 2012 г., 22:52
К сожалению, я использую Windows с Cygwin. Но я должен запомнить это - очень интересное решение!

(Я не знаю, с какой версии он был добавлен, но он работает на последней версии 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)
 07 мар. 2016 г., 22:42
Тот же ответ, что иOfir's.
Решение Вопроса

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
 28 июн. 2012 г., 20:28
на самом деле это возврат каретки, который должен быть отфильтрован, но правильная идея по неясному вопросу
 21 мая 2013 г., 17:32
это очень удобно, спасибо (+1)!
 08 янв. 2017 г., 10:50
Это не работает, говоряtr is not recognized as an internal or external command
 26 нояб. 2013 г., 16:50
Вот немного улучшенная версия, которая может обрабатывать пробелы в именах файлов:github.com/sschuberth/dev-scripts/blob/master/android/…
 17 сент. 2014 г., 14:29
в моем случае не удалось извлечь (правильно полученные) имена файлов из корневого каталога Android, чтобы решить эту проблему, я использовал:adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull

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 

пки принадлежат пользователю root или системному пользователю.

Ребята, вы должны изменить права доступа к этим файлам и папкам, прежде чем приступить к & quot; adb pull & quot ;.

Следующие команды могут помочь:

adb shell
su
chmod -R 777 target_folder
exit
...
adb pull /.../target_folder/ . (current local folder)

./adb pull /sdcard  & lt; - не удается

./adb pull /sdcard/  & lt; - работает рекурсивно - обратите внимание на косую черту

Протестировано с Nexus 5 и adb скачано в марте 2014 года.

 06 нояб. 2015 г., 12:07
Для меня это работало рекурсивно без окончательной косой черты, версия ADB 1.0.32

это очень полезно для передачи файлов с использованием подстановочных знаков без монтирования файловой системы. Вы можете включить этот скрипт где-нибудь в вашем пути 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

Пример: adbpull /sdcard/DCIM/Camera/IMG_2016*

 17 сент. 2017 г., 15:35
работал! Спасибо!

я использовал следующий простой скрипт для импорта образов WhatsApp моего виртуального устройства на мой рабочий стол

#! /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
 14 мая 2018 г., 14:06
Вы используете подстановочные знаки для cp на Android, а не для загрузки на хосте, поэтому он работает. Хорошая альтернатива, хотя копирование в / sdcard / требует дополнительной памяти и приводит к утечке личных файлов в sdcard.

Ваш ответ на вопрос