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

Page principale
Supprimer ce message
Répondre à ce message
Auteur: David BERCOT
Date:  
À: script_shell_fr
Sujet: Re: [#!/fr] Lister des fichiers dont les noms ont des blancs
Bonjour,

Vos différentes réponses sont plutôt intéressantes mais, n'ayant pas
suffisamment précisé le contexte, elles ne peuvent pas toujours être
mises en oeuvre.
Ainsi, cette demande concerne un serveur VMware ESXi (il s'agit d'une
busybox n'ayant pas toutes les fonctionnalités d'un Bash) et, par
exemple, il n'est pas possible d'utiliser des variables de type "array".

Pour rentrer encore un peu plus dans les détails, je cherche à faire un
tar sur plusieurs fichiers. La liste de ceux-ci est obtenue via un
ls /répertoire/*.vmdk | grep -v "00000".

Au final, je dois donc avoir quelque chose du genre :
tar -czvf /répertoire/vm.tar.gz "premier fichier.vmdk" "deuxième
fichier.vmdk" "troisième fichier.vmdk"

Et c'est là que je n'arrive pas à construire une commande viable...

Merci pour toutes vos pistes.

David.

Le Fri, 11 May 2012 21:56:27 +0200,
Nicolas Michel <Nicolas-Michel@???> a écrit :
>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

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