#1 Le 07/05/2007, à 14:10
- néovisio
[Résolu] bash gestion des espaces dans les nom de fichiers
Bonjour
C'est mon 1er bash script
Je récupère une liste de chemin dans un fichier fichier de type m3u et je veux copier les fichiers vers un répertoire
Mon problème est que je récupère des chaines avec des espaces et des caractères non reconnu par la commande cp
Comment on gère cela en bash script ou en ligne de commande
par exemple ceci ne collera pas
while read line
do
FILE_SOURCE="$line\n"
cp DEST_FILE FILE_SOURCE
done <LISTEFILE
En ligne de commande avec:
while read line; do echo -e "$line\n";cp "$line\n" /home/neo/Desktop/RepDest;done </home/neo/Desktop/ambiance1.m3u
j'ai le message d'erreur
cp: ne peut évaluer `/home/neo/Musique/Tom Waits/The Heart of Saturday Night/06 - the Heart of Saturday Night.mp3\\n': Aucun fichier ou répertoire de ce type
Donc comment faire
Néo
#2 Le 07/05/2007, à 14:16
- Compte anonymisé
Re : [Résolu] bash gestion des espaces dans les nom de fichiers
Salut
Je pense que c'est + le \\n qui pose pb que des espaces.
Tu devrais tenter sans les \n :
while read line; do echo -e "$line";cp "$line" /home/neo/Desktop/RepDest;done </home/neo/Desktop/ambiance1.m3u
@+
#3 Le 07/05/2007, à 14:24
- Woshee
Re : [Résolu] bash gestion des espaces dans les nom de fichiers
Si tu as un nom avec des espaces, du type:
/home/patate/peter pan
Pour avoir une ligne de commande qui comprenne que le dossier est peter pan et non pas seulement peter tu tapes:
/home/patate/peter\ pan
Tu t'en rends compte en utilisant la complétion dans un terminal, si tu tapes seulement /home/patate/peter et puis la touche tab, il complètera par ce que j'ai indiqué automatiquement.
Devenez parrain Linux ou trouvez quelqu'un pour vous aider près de chez vous:
http://parrains.linux.free.fr/
Hors ligne
#4 Le 07/05/2007, à 17:11
- clahor
Re : [Résolu] bash gestion des espaces dans les nom de fichiers
bjr et si on fait
/home/patate/"peter pan"
ça fonctionne aussi je crois.....
Dernière modification par clahor (Le 07/05/2007, à 17:11)
Hors ligne
#5 Le 07/05/2007, à 17:12
- néovisio
Re : [Résolu] bash gestion des espaces dans les nom de fichiers
je pense que c'est + le \\n qui pose pb que des espaces.
Tu devrais tenter sans les \n :while read line; do echo -e "$line";cp "$line" /home/neo/Desktop/RepDest;done </home/neo/Desktop/ambiance1.m3u
@+
Oui cela fonctionne
merci jeanjd63
C'est déjà bien
me reste plus qu'à me lancer dans le script
Néo
#6 Le 07/05/2007, à 20:50
- néovisio
Re : [Résolu] bash gestion des espaces dans les nom de fichiers
C'est ok
un petit peu arrangé pour sélectionner fichier et répertoire le script donne
#! /bin/bash
#script copy_file_list_m3u.sh
#copie les fichier d'une liste de lecture m3u vers un repertoire cible (exemple clé USB)
liste_m3u=`zenity --file-selection --title=" Choix liste fichiers .m3u à exporter" `
rep_cible=`zenity --file-selection --directory --title="Choix du repertoire cible" `
while read line; do echo -e "$line"
cp "$line" $rep_cible
done <$liste_m3u
Si quelqu'un peu mettre résolu.
Merci encore
Néo
#7 Le 07/05/2007, à 20:55
- Compte anonymisé
Re : [Résolu] bash gestion des espaces dans les nom de fichiers
Super
Pour le résolu tu cliques dans Signaler en bas de ton message et tu demandes à un gentil (pléonasme) modérateur de s'en occuper.
@+
#8 Le 07/05/2007, à 21:10
- néovisio
Re : [Résolu] bash gestion des espaces dans les nom de fichiers
Super
Pour le résolu tu cliques dans Signaler en bas de ton message et tu demandes à un gentil (pléonasme) modérateur de s'en occuper.
@+
Heu je crois si pas inscrit, peut pas le faire
#9 Le 14/05/2007, à 18:38
- jovial
Re : [Résolu] bash gestion des espaces dans les nom de fichiers
Bonjour
j'ai un autre cas: transformer la chaine suivante
/home/jovial/Mes%20Vid%C3%A9o
en
/home/jovial/Mes Vidéo
bye
Jean-luc
Ubuntu 22.10: Dell Optiplex 7040, I7-6700 16Gio - 22.04: Dell Latitude E7270 i5-6300U 8Gio
Hors ligne
#10 Le 15/05/2007, à 00:31
- jovial
Re : [Résolu] bash gestion des espaces dans les nom de fichiers
En utilisant sed ça peut le faire
echo "file:///home/jovial/Mes%20Vid%C3%A9o" | sed -e 's/file:\/\///'| sed -e 's/%20/ /g' | sed -e 's/%C3%A9/é/g'| sed -e 's/%C3%A8/è/g'
ma question est maintenant quels sont les autre caractère(code) à substituer=
ou si vous connaissez une fonction qui le fait directement...
bye
Jean-luc
Dernière modification par jovial (Le 15/05/2007, à 22:20)
Ubuntu 22.10: Dell Optiplex 7040, I7-6700 16Gio - 22.04: Dell Latitude E7270 i5-6300U 8Gio
Hors ligne