Petit problème de concaténation de fichiers...

Résolu
Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   -  
Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   -
Salut,

j'ai un petit souci avec la commande cat, peut-être que je fais faux, mais je vois pas où...

J'ai mille fichiers dans un dossier. Pour faire simple, ils s'appellent tout simplement :
file_1, file_2, ..., file_100, file 101, ... file_999, file_1000.

Et quand je fais :
cat file_* > files_out 

Ça ne me concatène que les 999 premiers fichier ; ça ne prend pas le file_1000.
Je ne sais pas pourquoi.

La commande tail file_1000 me donne bien les dernières lignes du fichier file_1000
mais tail files_out me donne les dernières lignes du fichier file_999.

Merci de vos futurs éclairages là-dessus...
A voir également:

5 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
on peut voir "l'ordre" avec
ls -1 file_* | head
essayer
cat $(ls file_* | sort -nt_ -k 2) > out 
# ou
cat $(ls -v file_* )> out
1
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

Avec "ls" il faut utliser l'option "-v" pour avoir un ordre de tri numérique.

ls -1v file_*
0
Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   110
 
c'est plus court, effectivement
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
enlever le -n pour effectuer le rename
rename -n  's/_(.*)/sprintf("_%04d", $1)/e' file*
1
Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   110
 
Euh... : "ooups" c'est peut-être pas plus compliqué qu'un simple tri alphabétique des fichiers en fait ...

Quelqu'un confirme ?

Comment ça va : est-ce que la commande cat prend les fichiers dans cet ordre :

file_1, file_11, file_12, ..., file_19, file_100, file_101, ..., file_199, file_1000
avant de passer aux files_2* ?
puis aux files_3*,
et ainsi de suite ?

Ou quelque chose d'approchant ?
0
Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   110
 
Merci ;)

alors l'ordre est le suivant, je comprends mieux pourquoi le fichier file_1000 n'était pas à la fin maintenant :
file_1
file_10
file_100
file_1000
file_101
file_102
file_103
...
file_109
file_11
file_110
file_111
...
file_119
file_12
file_120
etc.

Ta commande marche nickel ;-) C'est sympa !

En dehors de ça, aurais-tu une idée de comment renommer ces fichiers en ligne de commande pour qu'ils aient le nombre de zéros adéquats avant le chiffre final dans leur nom :
file_0001
file_0002
...
file_0100
etc.

J'ai essayé ceci mais sans succès :
rename - -0 file_?
rename - -0 file_??
rename - -0 file_???


"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   110
 
Ah merci beaucoup dubcek, c'est tip-top comme ça ! ;)
Sujet résolu.
0