à l'aide d'une commande comme celle-ci :
"ls *.txt | xargs rm -f" , je suis confronté à un échec
lorsque le nom du fichier contient des caractères spéciaux ( non imprimable,
comme 0x02 ).
Le fichier n'est pas supprimé.
Lors d'un ls ces caractères apparaissent sous forme de point d'intérogation
( freeBSD ).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Chazelas
2006-12-19, 11:02(+01), Stan:
bonjour,
à l'aide d'une commande comme celle-ci : "ls *.txt | xargs rm -f" , je suis confronté à un échec lorsque le nom du fichier contient des caractères spéciaux ( non imprimable, comme 0x02 ). Le fichier n'est pas supprimé.
Lors d'un ls ces caractères apparaissent sous forme de point d'intérogation ( freeBSD ).
Il ne devrait pas apparaitre sous forme de point d'interrogation quand l'output de ls est un pipe.
Toutefois les characteres <Tab> and <Newline> (et backslash et single et double quotes et space) ont une signification particuliere pour xargs.
Une idée pour parvenir au resultat souhaité ?
rm -f -- *.txt
Si les noms de fichiers n'ont pas de double-quotes:
printf '"%s"n' *.txt | xargs rm -f --
(en supposant que printf est builtin dans ton shell)
à l'aide d'une commande comme celle-ci :
"ls *.txt | xargs rm -f" , je suis confronté à un échec
lorsque le nom du fichier contient des caractères spéciaux ( non imprimable,
comme 0x02 ).
Le fichier n'est pas supprimé.
Lors d'un ls ces caractères apparaissent sous forme de point d'intérogation
( freeBSD ).
Il ne devrait pas apparaitre sous forme de point d'interrogation
quand l'output de ls est un pipe.
Toutefois les characteres <Tab> and <Newline> (et backslash et
single et double quotes et space) ont une signification
particuliere pour xargs.
Une idée pour parvenir au resultat souhaité ?
rm -f -- *.txt
Si les noms de fichiers n'ont pas de double-quotes:
printf '"%s"n' *.txt | xargs rm -f --
(en supposant que printf est builtin dans ton shell)
à l'aide d'une commande comme celle-ci : "ls *.txt | xargs rm -f" , je suis confronté à un échec lorsque le nom du fichier contient des caractères spéciaux ( non imprimable, comme 0x02 ). Le fichier n'est pas supprimé.
Lors d'un ls ces caractères apparaissent sous forme de point d'intérogation ( freeBSD ).
Il ne devrait pas apparaitre sous forme de point d'interrogation quand l'output de ls est un pipe.
Toutefois les characteres <Tab> and <Newline> (et backslash et single et double quotes et space) ont une signification particuliere pour xargs.
Une idée pour parvenir au resultat souhaité ?
rm -f -- *.txt
Si les noms de fichiers n'ont pas de double-quotes:
printf '"%s"n' *.txt | xargs rm -f --
(en supposant que printf est builtin dans ton shell)