Comment puis-je commander des fichiers dans un répertoire selon leur véritable ordre numérique?Bash true order order
file1.txt
file2.txt
file11.txt
...
Je pense qu'il est appelé: Natural Order
Comment puis-je commander des fichiers dans un répertoire selon leur véritable ordre numérique?Bash true order order
file1.txt
file2.txt
file11.txt
...
Je pense qu'il est appelé: Natural Order
Utilisez l'option -v
:
ls -v file*
file1
file2
file11
file12
Une autre option peut utiliser l'sort -V
, en supposant que l'on est disponible sur votre plate-forme:
ls file* |sort -V
Seulement avec GNU 'ls'; Sous MacOS X, l'option 'ls -v' est 'Forcer l'impression sans édition de caractères non graphiques'. –
'$ ls -v' renvoie' test5.txt text1.txt text2.txt text11.txt' pour moi. – thejh
Qu'en est-il de l'utilisation du tri (voir modification ci-dessus)? Celui-ci vient également avec une option de tri naturelle. – icanhasserver
Si tous les noms de fichiers sont fileSOMENUMBER.txt
, essayez ceci:
ls -1|sed 's:^[^0-9]*\([0-9]*\).*$:\1:g'|sort -n|sed 's:^\(.*\)$:file\1.txt:g'
Pour cette liste particulière de fichiers, trier numériquement à partir du cinquième caractère du premier champ.
$ ls file*|sort -k1.5n
file1
file2
file11
file12
Serait-ce une option pour remplir les nombres avec des zéros lors de la création des fichiers? – thejh
Quelle est la connexion bash ici? –
"bash" tend à suggérer que le problème doit être résolu sur une sorte de système d'exploitation Unix et non sur Windows. – icanhasserver