121 votes

Comment faire pour que adb tire TOUS les fichiers d'un dossier présent sur la carte SD ?

J'ai un dossier dans ma carte SD comme : /mnt/sdcard/Folder1/Folder2/Folder3/*.jpg

Le nom du Dossier1 et du Dossier2 reste constant et à l'intérieur du Dossier2 j'ai le Dossier3, 4, 5 et ainsi de suite . Je veux extraire tous les fichiers jpeg plutôt que tous les fichiers (il y en a plus) en utilisant adb dans mon répertoire actuel sur l'ordinateur

Chaque dossier a autre numéro de fichiers jpeg et d'autres fichiers et j'ai essayé de l'utiliser :

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

Mais ça n'a pas marché.. Donc uhmm comment faire pour que adb tire tous les fichiers présents dans n'importe quel dossier de la carte SD avec une seule commande (une seule commande parce que chaque dossier a un nombre différent de fichiers).

164voto

Jared Burrows Points 3932

Utilisation d'un seul fichier/dossier pull :

adb pull "/sdcard/Folder1"

Sortie :

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.

Fichiers/dossiers spécifiques en utilisant find de BusyBox :

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

Voici une explication :

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.

Les scripts commenceront dans le dossier supérieur et descendront récursivement pour trouver tous les fichiers "*.jpg" et les tirer de votre téléphone vers le répertoire actuel.

74voto

Palani Points 2939

Directory pull est disponible sur les nouveaux outils Android. (Je ne sais pas à partir de quelle version il a été ajouté, mais il fonctionne sur la dernière version ADT 21.1).

adb pull /sdcard/Robotium-Screenshots
pull: building file list...
pull: /sdcard/Robotium-Screenshots/090313-110415.jpg -> ./090313-110415.jpg
pull: /sdcard/Robotium-Screenshots/090313-110412.jpg -> ./090313-110412.jpg
pull: /sdcard/Robotium-Screenshots/090313-110408.jpg -> ./090313-110408.jpg
pull: /sdcard/Robotium-Screenshots/090313-110406.jpg -> ./090313-110406.jpg
pull: /sdcard/Robotium-Screenshots/090313-110404.jpg -> ./090313-110404.jpg
5 files pulled. 0 files skipped.
61 KB/s (338736 bytes in 5.409s)

45voto

Essayez d'indiquer le chemin d'où vous voulez récupérer les fichiers. Je viens de récupérer les fichiers de la carte SD comme suit

adb pull sdcard/

ne donnez PAS * comme pour élargir la recherche ou pour filtrer. ex : adb pull sdcard/*.txt --> c'est invalide.

donne juste adb pull sdcard/

6voto

Oui, il suffit d'utiliser le slash de fin pour récupérer le répertoire de manière récursive. Cela fonctionne pour moi avec le Nexus 5 et la version actuelle d'adb (mars 2014).

3voto

antimatter Points 114

Sur Android 6 avec ADB version 1.0.32, vous devez mettre / derrière le dossier que vous voulez copier. Ex. adb pull "/sdcard/".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X