Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2011, 15h31   #1
Membre du Club
 
Analyste/Développeur PHP/java
Inscription : juillet 2007
Messages : 61
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Analyste/Développeur PHP/java

Informations forums :
Inscription : juillet 2007
Messages : 61
Points : 40
Points : 40
Par défaut sort avec caractère spéciaux

Bonjour

je rencontre des problèmes pour trier des lignes avec des caractères spéciaux du style $,(),[],[]

la commande sort les ignore alors que je n'ai pas utilisé le paramètre -d ou autre... j'utilise les paramètre par défaut...

j'ai essayé différents paramètres du sort mais sans succès et je commence à être à court d'idée

Plus précisément :
Pour deux dossiers :
je récupère via un find (pour avoir le chemin complet des fichiers ce que ne permet pas ls) la liste des fichier dans une arborescence

les fichiers peuvent donc contenir des caractères spéciaux tels que le $ (à cause d'un fichier qui provient d'un serveur windows et dont le nom ne peut absolument pas être changé).

j'ai donc 2 liste qui ressemble à ca :

a/b/toto.txt
a/b/tato.txt
a/b/toto(ab).txt
a/c/d/pouet.txt
a/b/toto$ab.txt
a/b/toto$zy.txt
a/b/toto(zy).txt


logiquement si on trie ca donne ca :

a/b/tato.txt
a/b/toto.txt
a/b/toto(ab).txt
a/b/toto(zy).txt
a/b/toto$ab.txt
a/b/toto$zy.txt
a/c/d/pouet.txt

sauf que sort fait comme si les () et $ n'existaient pas et donc tri de la facon suivante :

a/b/tato.txt
a/b/toto.txt
a/b/toto(ab).txt
a/b/toto$ab.txt
a/b/toto(zy).txt
a/b/toto$zy.txt
a/c/d/pouet.txt

et cela me pose d'énormes problème pour mon algorithme après qui se base sur l'ordre alphabétique (pour des raisons d'optimisations vitales)

voilà, si quelqu'un savait comment faire en sorte d'avoir ma liste des fichiers triés par ordre alpahbétique avec prise en compte des caractère spéciaux, ca serait sympa car j'en suis à m'arracher les cheveux...

NB : oui ls permet de retourner la liste des fichiers triée correctement, sauf qu'il ne peux pas (d'après une recherche web et étude du man) retourner le chemin des fichiers

Merci.
lapinkiller est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/03/2011, 17h55   #2
Membre éclairé
 
Avatar de FRUiT
 
Homme
Inscription : février 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2011
Messages : 83
Points : 326
Points : 326
Citation:
Envoyé par lapinkiller Voir le message
NB : oui ls permet de retourner la liste des fichiers triée correctement, sauf qu'il ne peux pas (d'après une recherche web et étude du man) retourner le chemin des fichiers
Je dis ça c'est peut-être pas possible faudrait voir ton script, mais tu pourrais éventuellement faire un 'readlink -e "$file"' derrière ton ls ?
FRUiT est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 16/03/2011, 08h25   #3
Membre du Club
 
Analyste/Développeur PHP/java
Inscription : juillet 2007
Messages : 61
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Analyste/Développeur PHP/java

Informations forums :
Inscription : juillet 2007
Messages : 61
Points : 40
Points : 40
Bonjour

Comme je l'ai dit à plusieurs reprise, je n'utilise pas la commande ls mais la commande find.

j'ai fini par résoudre mon problème en faisant un
LC_ALL=C
avant de faire mon find |sort et là ca marche...
lapinkiller est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h27.


 
 
 
 
Partenaires

Hébergement Web