adb pullでAndroid端末内のファイルをまとめてPCに転送する。

仕事がたまっているので、今日は小ネタです。

AndroidのスクリーンショットをPCに転送したい

サービスのチェックなどをしている時に、端末でパシャパシャとスクリーンショットを撮りまくることがあります。
このスクリーンショットの画像をPCに転送するのがちょっと面倒くさいです。
今までは、Dropboxとかで転送していたんですが、adbが使えることに気づきました。

adb pullはワイルドカードが使えない

つまり、端末内のファイルをadb pullで一気に引っ張るんですが、このコマンドは不幸にもワイルドカードが使えないようです。

$ adb pull /sdcard/Pictures/Screenshots/*
remote object '/sdcard/Pictures/Screenshots/*' does not exist

そこで、他に方法がないか調べました。

xargsで1つずつ引っ張る

スクリーンショット 2014-05-07 20.54.42

調べたら同じ問題がStack Overflowにも投稿されていました。

android – adb pull multiple files – Stack Overflow
ここに書かれているのは、xargsを使う方法です。
adb shellでlsコマンドを実行し、スクリーンショットディレクトリ内のファイルの一覧を取得して、それに対してxargsコマンドを使って1つずつadb pullします。

やってみる

途中で、結果行以外を除去したり、trコマンドで整形もしてますが、だいたいこんな感じで全部取得できます。

$ adb shell ls /sdcard/Pictures/Screenshots/* | grep 'Screenshots' | tr '\r' ' ' | xargs -n1 adb pull
3859 KB/s (305901 bytes in 0.077s)
4050 KB/s (383307 bytes in 0.092s)
# ...(略)...

取得が終わったら、スクリーンショットを空にしてスッキリしておいても良いです。

adb shell rm /sdcard/Pictures/Screenshots/*

こちらはワイルドカードが使えます。
adbを使った方法なので、スクリーンショットに限らず、アクセス権がある範囲でどんなファイルでも使えます。

タイトルとURLをコピーしました