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

Résolu/Fermé
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 17 déc. 2012 à 15:32
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 17 déc. 2012 à 16:52
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 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
Modifié par dubcek le 17/12/2012 à 15:54
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
17 déc. 2012 à 16:49
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 samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 110
17 déc. 2012 à 16:52
c'est plus court, effectivement
0
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
17 déc. 2012 à 16:22
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 samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 110
17 déc. 2012 à 15:43
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 samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 110
Modifié par Swiss Knight le 17/12/2012 à 16:03
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 samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 110
17 déc. 2012 à 16:50
Ah merci beaucoup dubcek, c'est tip-top comme ça ! ;)
Sujet résolu.
0