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

Résolu
Swiss Knight Messages postés 2257 Statut Membre -  
Swiss Knight Messages postés 2257 Statut Membre -
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...

5 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

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

      ls -1v file_*
      0
    2. Swiss Knight Messages postés 2257 Statut Membre 110
       
      c'est plus court, effectivement
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    enlever le -n pour effectuer le rename
    rename -n  's/_(.*)/sprintf("_%04d", $1)/e' file*
    
    1
  3. Swiss Knight Messages postés 2257 Statut Membre 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
  4. Swiss Knight Messages postés 2257 Statut Membre 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Swiss Knight Messages postés 2257 Statut Membre 110
     
    Ah merci beaucoup dubcek, c'est tip-top comme ça ! ;)
    Sujet résolu.
    0