adbのpullコマンドを使って、特定のファイル(jpg)だけをmacbookにコピーしようとしています。adb pull sdcard/mydir/*.jpg" を試してみましたが、どうやらワイルドカードを解釈しないようです。どうすればjpgファイルだけをコピーできるのでしょうか? もしそれが役に立つなら、携帯電話をroot化しました。
ファイルを他のフォルダに移動し、フォルダ全体を取り出すことができます。
<pre>; 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 # 一時ディレクトリを削除する。 </pre>;
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` を実行する。
短いスクリプトについては、私の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 minus one"は、"ls"に1行につき1つのファイルを表示させ、引用符はファイル名のスペースを許可する。