어떻게 adb가 SD 카드에있는 폴더의 모든 파일을 가져 오나요?


110

내 SD 카드에 다음과 같은 폴더가 있습니다. /mnt/sdcard/Folder1/Folder2/Folder3/*.jpg

Folder1과 Folder2의 이름은 일정하게 유지되고 Folder2에는 Folder3, 4, 5 등이 있습니다. adb를 사용하는 모든 파일 (더 많은 파일)이 아닌 모든 jpeg 파일을 컴퓨터의 현재 디렉터리로 가져오고 싶습니다. .

모든 폴더에는 jpeg 파일 및 기타 파일 수가 다르며 이것을 사용해 보았습니다.

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

하지만 작동하지 않았습니다. 그래서 어떻습니까? 어떻게 내가 SD 카드의 모든 폴더에있는 모든 파일을 단일 명령으로 끌어 올 수 있습니까 (각 폴더에 파일 수가 다르기 때문에 단일 명령)


Linux 또는 Windows에 있습니까? 간단한 스크립트로 해결할 수 있습니까?
Jared Burrows

흠 나는 둘 다에 Android Developement Stuff를 설치했습니다 : Win7뿐만 아니라 Ubuntu .. 둘 다에 대한 해결책이 있다면 좋고 좋은 ..! 하지만 실제로는 Ubuntu (VM으로 설치)에만 필요합니다. .. 그래서 uhmm yeah im on Ubuntu ..
riteshtch

이 질문에 대한 정답을 표시해 주시겠습니까?
Jared Burrows

답변:


143

다음을 사용하는 단일 파일 / 폴더 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.

findfrom을 사용하는 특정 파일 / 폴더 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. The quotation marks around $line are required to work with filenames containing spaces.

스크립트는 최상위 폴더에서 시작하여 반복적으로 내려 가서 모든 "* .jpg"파일을 찾아 휴대폰에서 현재 디렉터리로 가져옵니다.


10
adb pull /sdcard모두 당겨!
Ian Vaughan 2015

@IanVaughan은 내가 자주 사용하는 명령이고 나를 위해 작동하지만 SD 카드에서 모든 것을 빼내고 하위 경로 중 하나를 제외하는 방법이 있었으면 좋겠습니다
GµårÐïåñ

Android가 있는지 궁금합니다 tar. ADB를 통한 간단한 타 파이프는 파일, 메타 데이터를 매우 세밀하게 가져올 수 있지만 제외를 허용합니다. GZIP / bzip2의가에 있습니다 경우, 압축 tarpipe는 :) 사용할 수 있습니다 것
마크 K 코완

들어 현대 버전 adb당신은 단지 디렉토리를 지정할 수 있으며,이 도구는 당신을 위해 풀 모든 재귀 것
DirkyJerky

@ mark-k-cowan adb backup with shared (sdcard)는 많은 버그가 있습니다.
Smeterlink

72

새 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)

1
나는 이것을 시도했지만 일부 디렉토리 만 가져 왔습니다. 기준이 무엇인지 확실하지 않습니다.
acjay 2014 년

2
root가 소유 한 폴더를 가져 오려면 adb루트 세션을 시작합니다 (사용 $ adb root).
MasterAM 2014-06-12

@MasterAM이 말한 것처럼 명령을 루트로 실행하십시오! 문제없이 작동했습니다! 건배!
Migisha

@acjay 빈 폴더는 생략됩니다. 이것은 궁극적으로 비어있는 재귀 폴더에도 해당됩니다. 예를 /sdcard/folder1/folder2발생합니다 folder1경우 생략 folder2비어 있고 다른 파일에서이 없습니다 folder1.
MDMower

40

파일을 가져올 경로를 지정하여 시도하십시오. 방금 sdcard에서 파일을 얻었습니다.

adb pull sdcard/

검색 범위를 넓히거나 필터링하기 위해 * 좋아하는 것을주지 마십시오. 예 : adb pull sdcard / *. txt-> 이것은 유효하지 않습니다.

그냥 adb pull sdcard /


이것은 훨씬 더 깨끗한 솔루션입니다. 의미 적으로 더 좋고 디렉토리 구조도 보존합니다.
Mike

11
후행 / 이 중요 합니다.
adrin 2015-10-24

나는 adb 버전 1.0.40과 함께 후행 슬래시가 필요하지 않았습니다
Miserable Variable

6

예, 디렉토리를 재귀 적으로 가져 오려면 후행 슬래시를 사용하십시오. Nexus 5 및 최신 버전의 adb (2014 년 3 월)에서 저에게 적합합니다.


나는 adb 버전 1.0.40과 함께 후행 슬래시가 필요하지 않았습니다
Miserable Variable

Google Pixel XL에서 Android Q를 실행하는 Android Debug Bridge 버전 1.0.32에서 후행 슬래시가 필요했습니다.
Rock Lee

2

ADB 버전 1.0.32를 사용하는 Android 6에서는 복사하려는 폴더를 / 뒤에 넣어야합니다. 예adb pull "/sdcard/".


나는 adb 버전 1.0.40과 함께 후행 슬래시가 필요하지 않았습니다
Miserable Variable

1

jellybean을 사용하는 경우 cmd를 시작하고 adb 장치를 입력하여 읽을 수 있는지 확인하고 adb pull sdcard / sdcard_ (날짜 또는 추가) <---이 파일을 미리 adb 디렉토리에 만들어야합니다. 이익!

다른 버전에서는 adb pull mnt / sdcard / sdcard_ (날짜 또는 추가)를 입력합니다.

파일을 만들지 않으면 엉망이되거나 작동하지 않습니다.


1

루팅 된 기기에서 액세스가 제한된 디렉토리를 가져 오려면 adb를 root로 다시 시작해야합니다 adb root. pull 전에 입력하십시오 . 그렇지 않으면 다음과 같은 오류가 발생합니다.remote object '/data/data/xxx.example.app' does not exist

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.