Convertir les favoris *.desktop en *.url pour MS Windows sur Ntfs

Bonjour!
Rapha_
Shogun
Shogun
Posts: 238
Joined: 12 Jun 2021, 21:59
Distribution: Xfce 4.12 - 5.rc3 - x86_64
Location: France

Convertir les favoris *.desktop en *.url pour MS Windows sur Ntfs

Post#1 by Rapha_ » 15 Feb 2022, 20:42

Bonjour,


On peut conserver des favoris à la volée en glissant le cadena de l'adresse d'une page web vers un dossier (attention ça ne marche pas toujours, mais je ne sais pas pourquoi)


j'ai eut 2 problèmes de compatibilité entre Linux et Windows :

- Les fichiers de favoris *.desktop ne pouvaient pas ouvrir automatiquement une page web sur Internet (seulement le contenu texte du fichier)
- Certains fichiers n'étaient pas lisibles avec MS Windows sur disque Ntfs à cause de caractères non autorisés (caractères réservés : " * / : < > ? \ | )


J'ai trouvé les solutions

Attention, le nom de fichier *.desktop sur Linux ne sera pas forcement le même que celui affiché dans Windows: celà dépend du contenu texte dans le fichier




> La première chose à faire est de déplacer les fichiers *.desktop vers un dossier vide .

Vous y placer le script de conversion de fichier convert_desktop2url.bash :

Code: Select all

#!/bin/bash
#case-insensitive
# source - https://www.linuxquestions.org/questions/programming-9/bash-script-convert-ms-url-files-to-linux-desktop-links-4175483877/
shopt -s nocaseglob
#give folder as argument or execute in current directory
[ -n "${1}" -a -d "${1}" ] && cd "${1}"
for file in *.desktop
do
	URLLINE=$(grep -Ei url= "$file")
	FILENAME=`echo $(basename "$file") | cut -d'.' -f1`
echo -ne "[InternetShortcut]\n$URLLINE" > "$FILENAME.url"
done
Inspiré de la source :
https://www.linuxquestions.org/question ... 175483877/

Pour convertir les fichiers *.desktop" vers "*.url"

Code: Select all

$ bash convert_desktop2url.bash





> la deuxième phase est de rendre compatible certains fichiers non reconnus à cause de caractères interdits


Donc cette ligne de commande va substituer les caractères qui ne sont pas des lettres de l'alphabet, majuscules [A-Z], minuscules [a-z], chiffres [0-9], caractères accentués [àáâäôèéêëçîïùúû] , le point ou le trait d'union [.-], par un espace '/ /'


Code: Select all

for f in *.url; do nf=$(echo "$f" |sed -e 's/[^A-Za-z0-9àáâäôèéêëçîïùúû.-]/ /g'); test "$f" != "$nf" && mv "$f" "$nf" && echo "$nf"; done

Source : https://qastack.fr/server/348482/how-to ... -filenames



Cette fois cela devrais fonctionner !