No lo uso, adbpero de los documentos pullse puede usar para extraer un directorio completo. Si ese es el caso y estos son archivos generados por su propia aplicación, ¿por qué no escribirlos en un subdirectorio como /sdcard/mygpsfilesy luego usarlos adb pull /sdcard/mygpsfiles? Funcionaría eso?
Squonk
2
Alternativamente, acabo de probar el Explorador de archivos en la DDMSperspectiva de eclipse y pude seleccionar varios archivos de mi tarjeta SD y realizar una pullen ellos. Si no usa eclipse, DDMS está disponible como una herramienta SDK separada.
Squonk
monitorcomando funciona muy bien, debería estar en <sdkdir>/tools!
Santosh Kumar
Respuestas:
141
Puede utilizar xargsy el resultado del adb shell lscomando que acepta comodines. Esto le permite copiar varios archivos. Es molesto que la salida del adb shell lscomando incluya caracteres de control de avance de línea que puede eliminar usando tr -d '\r'.
FYI: Windows y DOS usan "\ r \ n" para pares de retorno de carro / avance de línea (es decir, no "\ n \ r").
BrainSlugs83
3
en mi caso, no pudo intentar extraer los nombres de archivo (obtenidos correctamente) del directorio raíz de Android, para resolverlo, usé:adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull
rupps
4
No funciona diciendo tr no se reconoce como un comando interno o externo
Suncatcher
101
adb pull puede recibir un nombre de directorio en lugar de un archivo y extraerá el directorio con todos los archivos en él.
Extraiga todos sus rastreos gps en / sdcard / gpsTraces
adb pull /sdcard/gpsTraces/ .
Ejemplo de adb pully adb pushde directorios recursivos:
@kakyo Funciona para las subcarpetas para mí. compruebe que tiene la última versión de ADB de Google. (Estoy usando 1.0.29)
Ofir Luzon
Sí, descubrí que al final funciona para carpetas no vacías. Tenía algunas carpetas vacías que no fueron retiradas. Además, ¿parece que "push" no es recursivo?
kakyo
@kakyo He agregado la salida de un pull y push recursivo a mi respuesta. Tiene razón acerca de las carpetas vacías, no se tira ni se empuja.
Ofir Luzon
1
Cuidado: con ADB pull, los archivos pierden su fecha de modificación original.
Stan
3
@Stan: a menos que use la opción "-a" como en "adb pull [-a] <remote> ... <local>", que según la ayuda conserva la marca de tiempo y el modo del archivo.
Rusty Gear
27
./adb pull /sdcard <- falla
./adb pull /sdcard/ <- funciona de forma recursiva - observe la barra al final
Probado con Nexus 5 y adb descargado en marzo de 2014.
En mi máquina, necesitaba usar la ruta completa a adb, pero por lo demás, ¡esto funcionó muy bien!
Dan J
Esta respuesta es bastante inteligente. ¡Buen trabajo!
Darth Egregious
6
Aunque el adb pullcomando comenzó a aceptar el nombre de la carpeta para el parámetro remoto, todavía prefiero usar el tarcomando. Proporciona más flexibilidad: permite patrones de nombre de archivo (tanto de inclusión como de exclusión ), control de enlaces simbólicos, conserva los permisos de archivo. Desde Android 6.0 puede utilizar un archivo. Antes de eso, tenías que usar herramientas de terceros como busybox:
Oh, no funcionó. tar -tvf me dice que el resultado no parece un archivo tar. Oh bien.
theuddler
¡Manera muy fuerte! Pero el problema son errores / advertencias como "tar: eliminando el '/' inicial de los nombres de los miembros" agregado al archivo de salida. No sé cómo eliminar esto.
x'ES
Obtengo un archivo de 1.5KB en la salida.
Shayan
5
He creado esto para cajas de Windows. Es muy útil transferir archivos usando comodines sin montar el sistema de archivos. Puede incluir este script en algún lugar de su ruta env.
adbpull.bat
@echo off
setlocal enabledelayedexpansion
if %1.==. (
echo Wilcard parameter is required.
gotoend
)
for /F "tokens=* USEBACKQ" %%F in (`adb shell ls %1`) do (
settext=%%F
set mfile=!text:~0,-1!
adb pull "!mfile!"
)
:end
endlocal
Desafortunadamente, estoy usando Windows con Cygwin. Pero tengo que recordar esta: ¡una solución muy interesante!
hsz
3
La extracción de directorios está disponible en las nuevas herramientas de Android. (No sé de qué versión se agregó, pero está funcionando en el último ADT 21.1)
Además de ser un carácter menos para escribir (gran cosa), no convierte el -ren un espacio. Esta es una diferencia significativa, como si intentara hacer
Los comodines funcionan en mi caso, he estado usando el siguiente script simple para importar imágenes de Whatsapp de mi dispositivo virtual en mi escritorio
Usas comodines para cp en Android y no para tirar del host, por eso funciona. Buena alternativa, aunque copiar a / sdcard / cuesta memoria extra y filtra archivos privados a sdcard.
user905686
0
Potencia Shell:
adb shell ls /sdcard/gps*.trace | foreach {adb pull $_}
adb
pero de los documentospull
se puede usar para extraer un directorio completo. Si ese es el caso y estos son archivos generados por su propia aplicación, ¿por qué no escribirlos en un subdirectorio como/sdcard/mygpsfiles
y luego usarlosadb pull /sdcard/mygpsfiles
? Funcionaría eso?DDMS
perspectiva de eclipse y pude seleccionar varios archivos de mi tarjeta SD y realizar unapull
en ellos. Si no usa eclipse, DDMS está disponible como una herramienta SDK separada.monitor
comando funciona muy bien, debería estar en<sdkdir>/tools
!Respuestas:
Puede utilizar
xargs
y el resultado deladb shell ls
comando que acepta comodines. Esto le permite copiar varios archivos. Es molesto que la salida deladb shell ls
comando incluya caracteres de control de avance de línea que puede eliminar usandotr -d '\r'
.Ejemplos:
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
fuente
adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull
adb pull
puede recibir un nombre de directorio en lugar de un archivo y extraerá el directorio con todos los archivos en él.Extraiga todos sus rastreos gps en / sdcard / gpsTraces
adb pull /sdcard/gpsTraces/ .
Ejemplo de
adb pull
yadb push
de directorios recursivos: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)
fuente
./adb pull /sdcard
<- falla./adb pull /sdcard/
<- funciona de forma recursiva - observe la barra al finalProbado con Nexus 5 y adb descargado en marzo de 2014.
fuente
Analizar la salida de 'ls' es generalmente una mala idea. En su lugar, use 'buscar'.
adb shell 'find /sdcard/ -name "gps*.trace" -print0' | xargs -0 -n 1 adb pull
Por qué no debería analizar la salida de ls
fuente
Aunque el
adb pull
comando comenzó a aceptar el nombre de la carpeta para el parámetro remoto, todavía prefiero usar eltar
comando. Proporciona más flexibilidad: permite patrones de nombre de archivo (tanto de inclusión como de exclusión ), control de enlaces simbólicos, conserva los permisos de archivo. Desde Android 6.0 puede utilizar un archivo. Antes de eso, tenías que usar herramientas de terceros comobusybox
:adb exec-out tar c sdcard/amazonmp3 > amazon.tar
Asegúrese de omitir la guía
/
en su camino.fuente
He creado esto para cajas de Windows. Es muy útil transferir archivos usando comodines sin montar el sistema de archivos. Puede incluir este script en algún lugar de su ruta 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
Ejemplo:
adbpull /sdcard/DCIM/Camera/IMG_2016*
fuente
ADBFS a FUSE Filesystem para Android Debug Bridge si está usando linux o mac
fuente
La extracción de directorios está disponible en las nuevas herramientas de Android. (No sé de qué versión se agregó, pero está funcionando en el último 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)
fuente
basándose en la respuesta de David, encuentro que esto es un poco mejor:
adb shell ls /foo | tr -d '\r' | xargs -n1 adb pull
Además de ser un carácter menos para escribir (gran cosa), no convierte el
-r
en un espacio. Esta es una diferencia significativa, como si intentara haceradb shell ls /foo/myFile* | tr '\r' ' ' | xargs -i -n1 adb pull {} someDir
obtendrá un error diciendo
remote object '/foo/myFile1 ' does not exist
En su lugar, puede hacer esto, que funcionará:
adb shell ls /foo/myFile* | tr -d '\r' | xargs -i -n1 adb pull {} someDir
fuente
Los comodines funcionan en mi caso, he estado usando el siguiente script simple para importar imágenes de Whatsapp de mi dispositivo virtual en mi escritorio
#! /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
fuente
Potencia Shell:
adb shell ls /sdcard/gps*.trace | foreach {adb pull $_}
fuente
En Android, hay algunas carpetas con permisos asociados. Algunas carpetas pertenecen al usuario root o del sistema.
Ustedes deberían cambiar los permisos de esos archivos, carpetas antes de hacer "adb pull".
Los siguientes comandos podrían ayudar:
adb shell su chmod -R 777 target_folder exit ... adb pull /.../target_folder/ . (current local folder)
fuente