Re: [#!/fr] Lister des fichiers dont les noms ont des blancs

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Nicolas Michel
Date:  
À: La liste francophone des scripts shell
Sujet: Re: [#!/fr] Lister des fichiers dont les noms ont des blancs
Hello

Je réponds à David, désolé j'ai loupé le post initial.

essaies de taper ceci :

$> touch \"test\"

tu obtiendras un fichier "test" où les guillemets font partie du nom.
la variable, au moment du ls, n'interprète pas les doubles quotes,
ils sont considérés comme faisant partie du nom du fichier.
Ton fichier n'étant pas <"Mon fichier.odt"> mais juste <Mon fichier.odt>, tu obtiens une erreur.

Pour moi, il faut déterminer un caractère comme séparateurs, puis parser la variable ou plus simplement modifier le $IFS

Pour te donner un exemple, on trouve dans le $PATH des ":" (deux points) comme séparateurs.
Perso dans certain de mes scripts je met un retour de chariot.
Le problème est qu'il est parfaitement possible de créer des fichiers dont le nom contient des ":" (deux points)
ou même des retour de chariots.

Il faudrait donc faire un "find" avant pour tester le nom des fichiers,
et les renommer - ou changer de séparateur -
perso, un fichier qui contient un retour de chariot, je le renommes sans préavis.
(si si, j'en trouve régulièrement qui font foirer mes backups mais j'ai jamais compris comment mes users font ça "à la souris". Ils sont trop forts mes users)

Une autre possibilité est d'utiliser une variable de type array.
<http://tldp.org/LDP/abs/html/arrays.html>
ça donne un code un poil plus structuré et il faut coder en bash, en /bin/sh je crois pas qu'il y ait de array.
( pas vérifié )

Voilou pour mon avis.

On 11 mai 2012, at 17:39, Emmanuel Borlet wrote:

> D'après moi il faut utiliser les simple quotes



Non, ça sera pareil :
$ touch test
$ file=\'test\'
$ ls $file
ls: 'test': No such file or directory
$ file=\"test\"
$ ls $file
ls: "test": No such file or directory

a noter que le message d'erreur met des " ou des ' parce que ils y sont, c'est pas une question de présentation.
Ici il n'en met pas :
$ rm test
$ file=test
$ ls $file
ls: test: No such file or directory




--
On est jamais aussi bien battu que par soi-même
Devise Shadock

_______________________________________________
archives :
http://listes.patpro.net/list/sshfr.fr.html
http://listes.patpro.net/mailman/listinfo/script_shell_fr