web-dev-qa-db-ja.com

SDカードに存在するフォルダのすべてのファイルをadbで取得するにはどうすればよいですか

SDカードに次のフォルダーがあります:/mnt/sdcard/Folder1/Folder2/Folder3/*.jpg

Folder1とFolder2の名前は一定のままで、Folder2の内部にはFolder3、4、5などがあります。adbを使用してすべてのファイル(もっとあります)をコンピューターの現在のディレクトリにプルします。

すべてのフォルダーには異なる数のjpegファイルと他のファイルがあり、これを使用してみました:

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

しかし、うまくいきませんでした。だから、私はadbがSDカードの任意のフォルダに存在するすべてのファイルを単一のコマンド(各フォルダのファイル数が異なるため単一コマンド)でどのようにプルしますか

98
ritesht93

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. The quotation marks around $line are required to work with filenames containing spaces.

スクリプトは最上位フォルダーで開始され、再帰的に下に移動してすべての「* .jpg」ファイルを検索し、それらを電話から現在のディレクトリにプルします。

123
Jared Burrows

ディレクトリプルは、新しい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)
70
Palani

Sdcardからファイルを取得したばかりのファイルを取得したい場所からのパスを指定してみてください

adb pull sdcard/

検索を広げたり、除外したりするために*を与えないでください。例:adb pull sdcard/*。txt->これは無効です。

adb pull sdcard /を与えるだけです

39

うん、最後のスラッシュを使用して、再帰的にディレクトリをプルします。 Nexus 5と現在のバージョンのadb(2014年3月)で動作します。

ADBバージョン1.0.32のAndroid 6では、コピーするフォルダーの後ろに配置する必要があります。例:adb pull "/sdcard/".

2
antimatter

jellybeanを使用してcmdを開始する場合は、adbデバイスを入力して読み取り可能にするか、adb pull sdcard/sdcard_(日付または追加)と入力します<---このファイルは事前にadbディレクトリに作成する必要があります。利益!

他のバージョンでは、adb pull mnt/sdcard/sdcard_(日付または追加)と入力します

忘れずにファイルを作成するか、混乱するか、機能しません。

1
EDward

ルート化されたデバイスからアクセスを制限してディレクトリをプルする場合は、adbをルートとして再起動する必要があります。プルする前にadb rootと入力します。そうしないと、remote object '/data/data/xxx.example.app' does not existというエラーが表示されます

0
naXa