Как скопировать выбранные файлы с Android с помощью adb pull
Я пытаюсь использовать команду adb pull для копирования только определенных файлов (jpg) в мой macbook. Я пробовал "adb pull sdcard/mydir/*. Jpg", но он явно не интерпретирует подстановочные знаки. Как я могу скопировать только файлы jpg? Я рутировал телефон, если это поможет.
3 ответа
Решение
Вы можете переместить ваши файлы в другую папку, а затем вытащить всю папку.
оболочка adb mkdir /sdcard/tmp Оболочка adb mv /sdcard/mydir/*.jpg /sdcard/tmp # переместить ваши jpegs во временную директорию adb pull /sdcard/tmp/ # pull этого каталога (обязательно ставьте '/' в конце) Оболочка adb mv /sdcard/tmp/* /sdcard/mydir/ # переместить их обратно Оболочка adb rmdir /sdcard/tmp # удалить временный каталог
Вытащите несколько файлов с помощью регулярных выражений:
Создайте 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
Заметки:
- как есть, не будет работать, если в именах файлов есть пробелы
- включает в себя исправление для конца строки (EOL) на Android, которое является "\r\n"
Что касается короткого сценария, на моем хосте 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 минус один" позволяет "ls" показывать по одному файлу на строку, а кавычки допускают пробелы в имени файла.