web-dev-qa-db-ja.com

選択したファイルをAndroid adb pullでコピーする方法

特定のファイル(jpg)のみをMacbookにコピーするためにadb pullコマンドを使用しようとしています。 「adb pull sdcard/mydir/*。jpg」を試しましたが、どうやらワイルドカードが解釈されないようです。 jpgファイルのみをコピーするにはどうすればよいですか?それが役立つ場合、私は電話を根絶しました。

33
Jack BeNimble

ファイルを他のフォルダーに移動してから、フォルダー全体をプルできます。

 adb Shell mkdir /sdcard/tmp
adb Shell mv /sdcard/mydir/*.jpg/sdcard/tmp#jpegを一時ディレクトリ
 adb pull/sdcard/tmpに移動します/#このディレクトリをプルします(必ず最後に「/」を入れてください)
 adb Shell mv/sdcard/tmp/*/sdcard/mydir /#それらを元に戻します
 adb Shell rmdir/sdcard/tmp#一時ディレクトリを削除します
65

正規表現を使用して複数のファイルをプルする:

pullFiles.shを作成:

#!/bin/bash
Host_DIR=<pull-to>
DEVICE_DIR=/sdcard/<pull-from>
EXTENSION=".jpg"

for file in $(adb Shell ls $DEVICE_DIR | grep $EXTENSION'$')
do
    file=$(echo -e $file | tr -d "\r\n"); # EOL fix
    adb pull $DEVICE_DIR/$file $Host_DIR/$file;
done

それを実行します:

実行可能にする:chmod +x pullFiles.sh

実行:./pullFiles.sh

ノート:

  • ファイル名にスペースが含まれていると、そのままでは機能しません
  • 「\ r\n」であるAndroidの行末(EOL)の修正が含まれています
13
Paschalis

短いスクリプトについては、以下がLinuxホストで実行されます

#!/bin/bash
Host_DIR=<pull-to>
DEVICE_DIR=/sdcard/<pull-from>
EXTENSION="\.jpg"

while read MYFILE ; do
    adb pull "$DEVICE_DIR/$MYFILE" "$Host_DIR/$MYFILE"
done < $(adb Shell ls -1 "$DEVICE_DIR" | grep "$EXTENSION")

「ls-one」では、「ls」で1行に1つのファイルが表示され、引用符でファイル名にスペースを含めることができます。

0
Werner