Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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

jeanjd63 a écrit :

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  sad

#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