62 votes

Comment boucler des fichiers dans l’ordre naturel dans Bash?

Je suis en boucle sur tous les fichiers d’un répertoire avec la commande suivante :

Cependant, je les reçois dans cet ordre

Au lieu de

ce qu’est l’ordre naturel.

J’ai essayé la commande de tri, mais en vain.

118voto

catalin.costache Points 1430
<pre><code></code><p><code></code><code></code><code></code> les trie dans l’ordre naturel.</p><p>Notez que vous avez besoin de GNU sort installé pour que cela fonctionne.</p></pre>

10voto

gtangil Points 31

Avec l’option trier -g, il compare en fonction de la valeur numérique générale

0.log 1.log 2.log ... 10.log 11.log

Cela ne fonctionnera que si le nom des fichiers est numérique. S’ils sont des chaînes, vous les obtiendrez par ordre alphabétique. Par exemple :

brut/0.log brut/10.log brut/11.log ... brut/2.log

2voto

Joachim Pileborg Points 121221

Vous voulez dire que les fichiers avec le numéro 10 viennent avant les fichiers avec le numéro 3 dans votre liste? C’est parce que trie son résultat très simple, donc est plus petit que `` .

Une solution consiste à renommer tous les fichiers afin qu’ils aient le même nombre de chiffres (les fichiers avec un seul chiffre commencent par `` le numéro).

2voto

Sorpigal Points 10412
<pre><code></code><p><code></code><code></code> et n’est pas victime des problèmes de pipe-to-while.</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X