Re: [gull] Question bash noms longs
On Mon, 2011-04-25 at 21:28 +0200, sneak...@gmx.net wrote: Bonjour, Le morceau de code suivant liste et détruit des fichiers: for file in ${filelist} do echo Deleting $file rm $file done Mais le problème est qu'il ne traite pas les noms longs correctement. Comment le modifier pour qu'il fonctionne? Cela dépend plutôt des caractères dans le nom (espace, tab, retour à la ligne) que de la longueur du nom. Pour l'exemple en question je ferais plutôt la commande suivante: # find /DIRECTORY/ -type f -execdir /bin/echo deleting {} \; -execdir /bin/rm {} \; Oui mais cette version présente encore des problèmes avec le - par exemple. L'origine du problème dans le script provient du découpage sur les espaces fait par le for in. Comment est construite ta filelist ? http://tldp.org/LDP/abs/html/loops1.html En général, la solution la plus efficace est d'utiliser le caractère '0x00' comme séparateur, ce qui se fait simplement avec le couple find/xargs: find base -type f -print0 | xargs -0 rm -f En shell, cela oblige à faire un script à appeler par xargs... Mais j'ai déjà écrit du awk qui génère des commandes avec les doubles-quote que je pipe ensuite dans Bash. Sinon il faut utiliser un langage plus futé comme Perl. -- Yves Martin ___ gull mailing list gull@forum.linux-gull.ch http://forum.linux-gull.ch/mailman/listinfo/gull
Re: [gull] Question bash noms longs
Bonjour, Le morceau de code suivant liste et détruit des fichiers: for file in ${filelist} do echo Deleting $file rm $file done Mais le problème est qu'il ne traite pas les noms longs correctement. Comment le modifier pour qu'il fonctionne? Cela dépend plutôt des caractères dans le nom (espace, tab, retour à la ligne) que de la longueur du nom. Pour l'exemple en question je ferais plutôt la commande suivante: # find /DIRECTORY/ -type f -execdir /bin/echo deleting {} \; -execdir /bin/rm {} \; tom -- GMX DSL Doppel-Flat ab 19,99 Euro/mtl.! Jetzt mit gratis Handy-Flat! http://portal.gmx.net/de/go/dsl ___ gull mailing list gull@forum.linux-gull.ch http://forum.linux-gull.ch/mailman/listinfo/gull
Re: [gull] Question bash noms longs
Merci beaucoup, cela m'a dépanné! Comme j'avais un pattern qui contenait un path, j'ai utilisé l'option - wholename. Find est décidément une belle trouvaille. Bonne soirée, Laurent -Message d'origine- De : gull-boun...@forum.linux-gull.ch [mailto:gull-bounces@forum.linux- gull.ch] De la part de sneak...@gmx.net Envoyé : lundi, 25. avril 2011 21:29 À : Gull, liste de discussion Objet : Re: [gull] Question bash noms longs Cela dépend plutôt des caractères dans le nom (espace, tab, retour à la ligne) que de la longueur du nom. Pour l'exemple en question je ferais plutôt la commande suivante: # find /DIRECTORY/ -type f -execdir /bin/echo deleting {} \; -execdir /bin/rm {} \; ___ gull mailing list gull@forum.linux-gull.ch http://forum.linux-gull.ch/mailman/listinfo/gull