다음을 사용하여 여러 파일을 가져 오는 가장 좋은 방법은 무엇입니까?
adb pull
내에있는 /sdcard/
다음과 같은 이름을 가진 25 개 파일 :
gps1.trace
gps2.trace
...
gps25.trace
와일드 카드가 작동하지 않습니다.
adb pull /sdcard/gps*.trace .
다음을 사용하여 여러 파일을 가져 오는 가장 좋은 방법은 무엇입니까?
adb pull
내에있는 /sdcard/
다음과 같은 이름을 가진 25 개 파일 :
gps1.trace
gps2.trace
...
gps25.trace
와일드 카드가 작동하지 않습니다.
adb pull /sdcard/gps*.trace .
DDMS
이클립스 관점 에서 파일 탐색기를 사용해 보았고 내 sdcard에서 파일을 다중 선택하고 수행 할 pull
수있었습니다. eclipse를 사용하지 않는 경우 DDMS는 별도의 SDK 도구로 사용할 수 있습니다.
monitor
명령이 잘 작동합니다 <sdkdir>/tools
.
답변:
와일드 카드를 허용 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
adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull
adb pull
at file 대신 디렉토리 이름을받을 수 있으며 모든 파일이있는 디렉토리를 가져옵니다.
/ sdcard / gpsTraces에서 모든 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)
'ls'의 출력을 구문 분석하는 것은 일반적으로 나쁜 생각입니다. 대신 '찾기'를 사용하십시오.
adb shell 'find /sdcard/ -name "gps*.trace" -print0' | xargs -0 -n 1 adb pull
adb pull
명령이 원격 매개 변수에 폴더 이름을 받아들이 기 시작 했지만 여전히 tar
명령 을 사용하는 것을 선호합니다 . 더 많은 유연성을 제공합니다. 파일 이름 패턴 ( include 및 exclude 모두 포함 ), symlink 제어, 파일 권한 유지를 허용합니다. Android 6.0부터는 내장 기능을 사용할 수 있습니다. 그 전에는 다음과 같은 타사 도구를 사용해야했습니다 busybox
.
adb exec-out tar c sdcard/amazonmp3 > amazon.tar
/
경로 에서 선행을 생략 해야합니다.
Windows 상자 용으로 만들었습니다. 파일 시스템을 마운트하지 않고 와일드 카드를 사용하여 파일을 전송하는 것이 매우 유용합니다. 경로 환경 어딘가에이 스크립트를 포함 할 수 있습니다.
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*
ADBFS a FUSE Filesystem for Android Debug Bridge ( Linux 또는 Mac을 사용하는 경우)
새 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)
David의 답변을 바탕으로 이것이 약간 더 나아졌습니다.
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
내 경우에는 와일드 카드가 작동하며 다음과 같은 간단한 스크립트를 사용하여 가상 장치의 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
adb
문서pull
에서 전체 디렉토리를 가져 오는 데 사용할 수 있습니까 ??? 이 경우 자체 앱에서 생성 된 파일 인 경우 다음과 같은 하위 디렉터리에/sdcard/mygpsfiles
기록한 다음adb pull /sdcard/mygpsfiles
. 작동할까요?