Как сделать adb для ВСЕХ файлов папки, присутствующей на SD-карте

У меня есть папка на SD-карте: /Шоссе/SDCard/Folder1/Folder2/folder3/*. JPG

Название Folder1 и Folder2 остается постоянным, а внутри Folder2 у меня есть Folder3, 4, 5 и т.д. Я хочу вытащить все файлы jpeg, а не все файлы (их больше), используя adb для моего текущего каталога на компьютере.

В каждой папке есть различное число файлов jpeg и других файлов, и я попытался использовать это:

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

Но это не сработало. Итак, как я делаю adb, вытащить все файлы, присутствующие в любой папке SD-карты, с помощью одной команды (одна команда, потому что каждая папка имеет различное количество файлов).

Ответ 1

Отдельный файл/папка с помощью 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

Сценарии начинаются в верхней папке и рекурсивно идут вниз и находят все файлы "*.jpg" и вытаскивают их из вашего телефона в текущий каталог.

Ответ 2

Вывод каталога доступен в новых инструментах для 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)

Ответ 3

Попробуйте просто указать путь, из которого вы хотите вытащить файлы Я просто получил файлы с SDCard, например

adb pull sdcard/

НЕ дают *, чтобы расширить поиск или отфильтровать. ex: adb pull sdcard/*. txt → это неверно.

просто введите adb pull sdcard/

Ответ 4

Да, просто используйте трейлинг-косую черту, чтобы рекурсивно вытащить каталог. Работает для меня с Nexus 5 и текущей версией adb (март 2014 года).

Ответ 5

На Android 6 с ADB версии 1.0.32 вы должны поместить/за папку, которую хотите скопировать. Например, adb pull "/sdcard/".

Ответ 6

Если вы используете jellybean, просто запустите cmd, введите adb-устройства, чтобы убедиться, что вы читаете, введите adb pull sdcard/sdcard_ (дата или дополнительная). < --- этот файл необходимо сделать в каталоге adb заранее. PROFIT!

В других версиях введите adb pull mnt/sdcard/sdcard_ (дата или дополнительная)

Не забудьте сделать файл, иначе у вас будет беспорядок или он не будет работать.

Ответ 7

Если вы хотите вытащить каталог с ограниченным доступом из корневого устройства, вам нужно перезапустить adb как root: введите adb root перед нажатием. В противном случае вы получите сообщение об ошибке remote object '/data/data/xxx.example.app' does not exist