Как мне АБР вытащить все файлы из папки, присутствующей в SD-карте


У меня есть папка на SD-карта как: /mnt / sdcard/Folder1/Folder2/Folder3/*.jpg

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

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

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

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

7 89

7 ответов:

один файл / папка с помощью 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 '5' | 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 '5'                     - 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 " файлы и потяните их с вашего телефона в текущий каталог.

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

пожалуйста, попробуйте просто дать путь, откуда вы хотите вытащить файлы Я только что получил файлы с sdcard, как

adb pull sdcard/

не дают * нравится расширять поиск или отфильтровывать. пример: adb pull sdcard/*.txt --> это недопустимо.

просто дайте adb pull sdcard/

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

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

Если вы используете jellybean просто запустите cmd, введите adb устройства, чтобы убедиться, что ваш читаемый, введите adb pull sdcard / sdcard_ (дата или дополнительно)

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

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

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