1. ホーム
  2. android

[解決済み] SDカードにあるフォルダの全ファイルをadbで取得する方法

2022-08-20 01:41:24

質問

SDカードに以下のようなフォルダがあります。 /mnt/sdcard/Folder1/Folder2/Folder3/*.jpg

Folder1とFolder2の名前は一定で、Folder2の中にFolder3,4,5...とあります。 私はコンピュータ上の私の現在のディレクトリにadbを使用してすべてのファイル(より多くがある)ではなく、すべてのjpegファイルを引き出したいのですが...。

各フォルダには 異なる番号 のjpegファイルなどがあり、これを使ってみました。

adb pull mnt/sdcard/Folder1/Folder2/Folder/*.jpg .

しかし、それは動作しませんでした... SD カードの任意のフォルダに存在するすべてのファイルを単一のコマンドで adb pull するにはどうすればよいでしょうか (フォルダごとにファイル数が異なるため、単一のコマンドとなります)。

どのように解決するのですか?

単一のファイル/フォルダを使用する pull :

adb pull "/sdcard/Folder1"

出力します。

adb pull "/sdcard/Folder1"
pull: building file list...
pull: /sdcard/Folder1/image1.jpg -> ./image1.jpg
pull: /sdcard/Folder1/image2.jpg -> ./image2.jpg
pull: /sdcard/Folder1/image3.jpg -> ./image3.jpg
3 files pulled. 0 files skipped.

特定のファイル/フォルダーを使用する find から BusyBox :

adb shell find "/sdcard/Folder1" -iname "*.jpg" | tr -d '\015' | while read line; do adb pull "$line"; done;

以下は説明です。

adb shell find "/sdcard/Folder1" - use the find command, use the top folder
-iname "*.jpg"                   - filter the output to only *.jpg files
|                                - passes data(output) from one command to another
tr -d '\015'                     - explained here: http://stackoverflow.com/questions/9664086/bash-is-removing-commands-in-while
while read line;                 - while loop to read input of previous commands
do adb pull "$line"; done;         - pull the files into the current running directory, finish. The quotation marks around $line are required to work with filenames containing spaces.

スクリプトは一番上のフォルダから始まり、再帰的に下に降りていき、すべての "*.jpg" ファイルを見つけて、携帯電話から現在のディレクトリに引き込みます。