を使用して複数のファイルをプルするための最良の方法は何ですか
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
日食の観点からファイルエクスプローラーを試したところ、SDカードからファイルを複数選択して実行することができ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
ファイルではなくディレクトリ名を受け取ることができ、すべてのファイルを含むディレクトリをプルします。
/ 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)
にもかかわらずadb pull
コマンドは、リモート・パラメータのフォルダ名を受け入れ始め、私はまだ使用することを好むtar
のコマンドを。(両方のファイル名パターンが可能になります-それはより多くの柔軟性を提供含めると除外、)シンボリックリンク制御、ファイルのアクセス権を保持します。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*
LinuxまたはMacを使用している場合、ADBFSはAndroid DebugBridge用のFUSEファイルシステムです。
ディレクトリプルは、新しい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)
デビッドの答えに基づいて、私はこれが少し良いと思います:
adb shell ls /foo | tr -d '\r' | xargs -n1 adb pull
入力する文字が1文字少ない(大したこと)ことに加えて、-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
。それはうまくいくでしょうか?