Recuperation bluetooth ligne de commande

Bonjour a tous, ça va faire un moment que je n’ai pas posté ici, mais je reste fidèle a GNU/Linux, et je n’ai plus peur de l’écran noir :stuck_out_tongue:

Je vais posté un bout de code que j’ai mis au point pour récupérer les photos de mon téléphone portable en Bluetooth car je n’arrive plus a y accédé en cliquant sur parcourir les fichiers.

Je pense enfin je suis sur que le code peut être améliorer mais je me suis arracher les cheveux je voulais tout mettre dans des variable afin d’évité l’écriture dans des fichiers donc si vous avez des idées je vous écoute.

#!/bin/bash
# Programme de récuperation bluetooth avec obexftp


# Recuperation de la liste des fichier contenu sur l'appareil bluetooth dans un fichier liste
obexftp -b -c /Photos/ -l > liste

# On recupere que les ligne contenant .jpg dans un fichier listeJPG
grep -i .jpg liste > listeJPG

# On récupere uniquement les nom des fichiers
cut -d \" -f 2 listeJPG > liste


for line in $(cat liste)
do

tout="$tout $line "

done 

# on lance la récuperation des Images
obexftp -b -c "/Photos" -g $tout

# On supprime les 2 fichiers créer
rm liste
rm listeJPG

exit 0

Essaie avec ça pour voir ?

#!/bin/bash
#
# Récupération des fichiers ".jpg" du répertoire "Photos"
#  avec obexftp par bluetooth

repCible="/Photos"
extPhotos="jpg"
nbSecond=1
listeDesFichiers=""

listeDesFichiers=$(                                     \
    obexftp --bluetooth --chdir "${repCible}" --list  | \
    sed -n '/\.${extPhotos}$/Ip'                      | \
    sed    's/.*\///'                                 | \
    sed    ':a:N;$!ba;s/\n/ /g'                         \ 
)

sleep $nbSecond;

obexftp --bluetooth --chdir "${repCible}" --get $listeDesFichiers

Après l’initialisation des variables qui vont être utilisées,

Affectation à la variable [mono]$listeDesFichiers[/mono],
de la sortie de la suite des commandes
qui commence juste après [mono]$([/mono] et se termine par le [mono])[/mono] situé 5 lignes plus bas.

Description de la suite de commandes :

  • Récupère, avec [mono]obexftp[/mono] et par bluetooth, la liste des fichiers contenus dans le répertoire [mono]${repCible}[/mono].
  • N’affiche que les lignes se terminant par [mono].${extPhotos}[/mono] (sans tenir compte de la casse des caractères <=> majuscules et minuscules).
  • Remplace tout ce qui est à gauche d’un caractère [mono]/[/mono] par rien du tout => N’affiche que le nom du fichier [mono].jpg[/mono].
  • Remplace tout caractère de retour à la ligne par un espace dans chaque ligne.

Ensuite, il y a une attende pendant [mono]$nbSecond[/mono] secondes (Il faut bien que [mono]obexftp[/mono] et le téléphone prennent le temps de se faire quelques politesses :slightly_smiling: )

Et enfin, la récupération par [mono]obexftp[/mono] de la liste des fichiers qui est contenue dans la variable [mono]$listeDesFichiers[/mono].

=======
NOTES :

  • Le caractère [mono][/mono] qui est avant la fin de chaque ligne est un caractère d’échappement : il fait en sorte que bash n’interpréte pas le retour à la ligne qui suit.

On aurait tout aussi bien pu mettre la suite de commandes sur une seule ligne,
comme dans la ligne de commande qui suit ::listeFichiers=$(obexftp --bluetooth --chdir "${repCible}" --list | sed -n '/\.${extPhotos}$/Ip' sed 's/.*\///' | sed ':a:N;$!ba;s/\n/ /g')(J’en avais même profité pour rajouter des espaces afin d’essayer de rendre le tout plus facile à lire.)

  • Le caractère [mono]|[/mono] est un tube (pipe) : il permet d’envoyer la sortie d’une commande sur l’entrée de la suivante.

=======
DOC :

Introduction à la programmation en Bash (Eric Sanchis - aral.iut-rodez)

abs.traduc.org/abs-fr/

tldp.org/LDP/abs/html/

=======
Je débute moi aussi, alors il doit y avoir de vrais programmeurs qui auraient très certainement beaucoup mieux à proposer comme syntaxe et solution,
mais qui doivent en avoir les yeux qui “piquent” si ils lisent ce “code”.

[size=70]Je leur demande très humblement de bien vouloir pardonner toutes mes fautes de débutant.[/size]