Intereting Posts
Получение полного и доступного пространства на Android Кэширование загруженных данных JSON в базу данных SQLite – это хорошая идея? Это означает, что minifyEnabled false в блоке release в файле gradle.build Как я могу реализовать пользовательскую панель действий с пользовательскими кнопками в Android? Что такое основное использование «Добавить метод контракта на …» Android Studio Android Theme.AppCompat.Light с Dark Toolbar (для легкого текста) Как WhatsApp может быть сквозным зашифрованным, когда WhatsApp Web все еще работает Поддержка Android SSL – SNI Обновить меню NavigationView после изменения языка Вставлять и удалять фрагменты в viewpager правильно Как заставить видео играть в полноэкранном режиме в проигрывателе YouTube? Изменение источника ImageView Ошибка аутентификации: невозможно ответить на любую из этих проблем: {} Android – 401 Unauthorized Как подключить одно устройство OnePlus к Ubuntu через MTP? Квота создания проекта консоли Google Developers

Adb вытащить несколько файлов

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

adb pull 

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

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

Подстановочный файл не работает:

 adb pull /sdcard/gps*.trace . 

Solutions Collecting From Web of "Adb вытащить несколько файлов"

Вы можете использовать xargs и результат команды adb shell ls которая принимает подстановочные знаки. Это позволяет копировать несколько файлов. Раздражающе, вывод команды adb shell ls включает в себя управляющие символы строки, которые можно удалить с помощью tr -d '\r' .

Пример:

 adb shell 'ls /sdcard/gps*.trace' | tr -d '\r' | xargs -n1 adb pull 

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

Потяните все ваши следы gps в / 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/ <- работает рекурсивно – обратите внимание на конечную косую черту

Протестировано с Nexus 5 и adb загружено в марте 2014 года.

ADBFS – файловая система FUSE для Android Debug Bridge, если вы используете linux или mac

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

Доступ к каталогу доступен на новых инструментах для 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 pull начала принимать имя папки для удаленного параметра, я по-прежнему предпочитаю использовать команду tar . Он обеспечивает большую гибкость – позволяет использовать шаблоны имен файлов (оба включают и исключать ), управление символами, сохраняет права доступа к файлам. Начиная с Android 6.0 вы можете использовать встроенный. До этого вам приходилось использовать сторонние инструменты, такие как busybox :

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

Не забудьте пропустить ведущий / на вашем пути.

Опираясь на ответ Дэвида, я считаю, что это немного лучше:

 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 

В Android есть папка с соответствующими разрешениями! Некоторая папка принадлежит пользователю root или системе.

Вы, ребята, должны изменить разрешения этих файлов, папок, прежде чем делать «adb pull».

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

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