web-dev-qa-db-fra.com

Comment copier des fichiers sélectionnés depuis Android avec adb pull

J'essaie d'utiliser la commande adb pull pour copier uniquement certains fichiers (jpg) sur mon macbook. J'ai essayé "adb pull sdcard/mydir/*. Jpg" mais apparemment il n'interprète pas les jokers Comment puis-je obtenir uniquement les fichiers jpg copiés? J'ai téléphoné au téléphone si cela peut aider. 

33
Jack BeNimble

Vous pouvez déplacer vos fichiers vers un autre dossier, puis extraire tout le dossier.

 adb Shell mkdir /sdcard/tmp
adb Shell mv /sdcard/mydir/*.jpg/sdcard/tmp # déplacez vos fichiers jpeg vers le répertoire temporaire 
 adb pull/sdcard/tmp/# tirez ce répertoire ( assurez-vous de mettre "/" à la fin) 
 adb Shell mv/sdcard/tmp/*/sdcard/mydir/# les déplacer vers l'arrière 
 adb Shell rmdir/sdcard/tmp # supprimer le répertoire temporaire 
65
Michał Zieliński

Tirez plusieurs fichiers en utilisant regex:

Créer 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

Exécuter:

Rendez-le exécutable: chmod +x pullFiles.sh

Exécutez-le: ./pullFiles.sh

Remarques:

  • tel quel, ne fonctionnera pas lorsque les noms de fichiers ont des espaces
  • inclut un correctif pour la fin de ligne (EOL) sur Android, qui est un "\ r\n"
12
Paschalis

En ce qui concerne le script court, ce qui suit s’exécute sur mon hôte 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 moins un" permet à "ls" d'afficher un fichier par ligne et les guillemets permettent d'espacer le nom du fichier.

0
Werner