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

adbのpullコマンドを使って、特定のファイル(jpg)だけをmacbookにコピーしようとしています。adb pull sdcard/mydir/*.jpg" を試してみましたが、どうやらワイルドカードを解釈しないようです。どうすればjpgファイルだけをコピーできるのでしょうか? もしそれが役に立つなら、携帯電話をroot化しました。

ソリューション

ファイルを他のフォルダに移動し、フォルダ全体を取り出すことができます。

解説 (4)

正規表現を使って複数のファイルを取り出します:

pullFiles.sh を作成する:

#!/bin/bash
HOST_DIR=
DEVICE_DIR=/sdcard/
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` を実行する。

注意事項

  • このままでは、ファイル名にスペースがある場合に動作しません。
  • Androidの行末(EOL)を修正した;
解説 (5)

短いスクリプトについては、私のLinuxホスト上で次のように実行される。

#!/bin/bash
HOST_DIR=
DEVICE_DIR=/sdcard/
EXTENSION="\.jpg"

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

"ls minus one"は、"ls"に1行につき1つのファイルを表示させ、引用符はファイル名のスペースを許可する。

解説 (0)