Ich versuche, den adb pull Befehl zu verwenden, um nur bestimmte Dateien (jpg) auf meinen Macbook zu kopieren. Ich habe versucht "adb pull sdcard/mydir/*.jpg", aber offensichtlich interpretiert es Platzhalter nicht. Wie kann ich nur die jpg Dateien kopieren? Ich habe das Telefon gerootet, falls das hilft.
Antworten
Zu viele Anzeigen?Sie können Ihre Dateien in einen anderen Ordner verschieben und dann den gesamten Ordner ziehen.
adb shell mkdir /sdcard/tmp
adb shell mv /sdcard/mydir/\*.jpg /sdcard/tmp # verschieben Sie Ihre JPEGS in das temporäre Verzeichnis
adb pull /sdcard/tmp/ # ziehen Sie diesen Ordner (stellen Sie sicher, dass am Ende '/' steht)
adb shell mv /sdcard/tmp/\* /sdcard/mydir/ # verschieben Sie sie zurück
adb shell rmdir /sdcard/tmp # temporäres Verzeichnis entfernen
Paschalis
Punkte
11227
Mehrere Dateien mit Regex abrufen:
Erstellen Sie 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
Führen Sie es aus:
Machen Sie es ausführbar: chmod +x pullFiles.sh
Führen Sie es aus: ./pullFiles.sh
Anmerkungen:
- wird nicht funktionieren, wenn Dateinamen Leerzeichen enthalten
- enthält eine Lösung für das Zeilenende (EOL) auf Android, das "\r\n" ist
Werner
Punkte
1
Was das kurze Skript betrifft, läuft das Folgende auf meinem Linux-Host
#!/bin/bash
HOST_DIR=
DEVICE_DIR=/sdcard/
ERWEITERUNG="\.jpg"
while read DATEI ; do
adb pull "$DEVICE_DIR/$DATEI" "$HOST_DIR/$DATEI"
done < $(adb shell ls -1 "$DEVICE_DIR" | grep "$ERWEITERUNG")
"ls minus eins" lässt "ls" eine Datei pro Zeile anzeigen, und die Anführungszeichen ermöglichen Leerzeichen im Dateinamen.