IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Concaténation de plusieurs fichiers en un seul


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 24
    Points : 30
    Points
    30
    Par défaut Concaténation de plusieurs fichiers en un seul
    Bonjour,

    Je souhaite concaténer les données de plusieurs fichiers en un seul. merci de votre aide.

    fichier1
    fichier2
    fichier3
    .
    .
    .
    .
    .
    fichierN

    J'ai pensé à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat fichier1 fichier2 .... fichier1 >> fichierfinal
    Le problème je peux avoir des milliers de fichiers.
    Merci de votre aide.

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,
    Un find couplé au cat, voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -name '*' -exec cat {} \; >../cat.txt
    ici je prend tous le fichiers qui sont dans le repertoire courant et je les concatene dans le fichier cat.txt qui, très important, est dans le répertoire supérieur pour qu'il ne soit pas listé par le find.
    A toi de trouver la syntaxe de ton find pour qu'il liste la totalité de tes fichiers.
    Cordialement.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Décembre 2012
    Messages : 43
    Points : 91
    Points
    91
    Par défaut
    sans faire de find, juste un wildcard sur le cat doit pouvoir fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat * >> ../FichierConcat.txt
    Saaaaluuut Nounou!!

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    un 'cat *' avec des milliers de fichiers, je crains un débordement du genre "line too long"
    Cordialement.

  5. #5
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Salut,

    Sinon une boucle for ne fonctionnerait pas ?
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    En fait c'est le '*' qui peut poser problème, donc cela dépend de ta boucle for...
    Cordialement.

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Ben, c'est tout simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls | while read file ; do cat "$file" ; done > ../the_file
    PS: J'espère que N_BaH est en vacances...

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Question: c'est bien beau de concaténer un milliers de fichiers, mais n'y aurait il pas un ordre à respecter ?
    Cordialement.

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    J'espère que N_BaH est en vacances
    loupé!
    je suis ici.
    j'ai vu.
    j'ai moinssé.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Souvent, l'ordre de ls est un ordre alphabétique. On peut réussir à l'inverser, ou à utiliser les locales pour modifier un peu. Souvent, ça marche bien par défaut
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Oui, je sais pour l'ordre du ls, mais qui nous dit que ces fichiers sont à prendre dans l'ordre alphabétique ?
    J'ai déjà vu des fichier timestamper en JJ-MM-AA et là l'ordre alphabétique, ce n'est pas super
    Cordialement.

  12. #12
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    loupé!
    je suis ici.
    Caramba!

    j'ai vu.
    j'ai moinssé.
    C'est bien beau de moinser (je ne t'en veux pas!), mais proposes-tu autre chose?

    Est-il exact que cat * puisse poser problème s'il y a des milliers de fichiers?

    Merci de nous éclairer!

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Oui, je sais pour l'ordre du ls, mais qui nous dit que ces fichiers sont à prendre dans l'ordre alphabétique ?
    J'ai déjà vu des fichier timestamper en JJ-MM-AA et là l'ordre alphabétique, ce n'est pas super
    Je plussoie!

    De l'intérêt de timestamper en AA-MM-JJ (qui a le gros avantage que l'ordre alphabétique produit le même résultat que l'ordre temporel (à condition de ne pas franchir de frontière de siècle (pour ceux qui traitent des données du XXème siècle (ou envisagent de perdurer jusqu'au XXIIème siècle (voire plus)), je ne saurais trop recommander d'utiliser AAAA-MM-JJ)))

  14. #14
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    C'est bien beau de moinser (je ne t'en veux pas!), mais proposes-tu autre chose?
    le shell.
    il affiche les fichiers par ordre alphabétique.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Bah, je ne suis plus si sur que le cat * rencontre un problème avec quelques milliers de fichiers, car je viens de tester avec 10.000 fichiers et cela fonctionnent (cela me représente ~159000 caractères).
    J'ai même créé une variable de 40678912 caractères sans problèmes.
    Mais dernièrement, au travail, j'ai rencontré un line too long sur une variable mais j'étais soit en sh soit en ksh et sur un AIX...
    Il va falloir que j'approfondisse ça pour comprendre...
    Ou si quelqu'un à des billes
    Cordialement.

  16. #16
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Le problème de longueur de la ligne de commande, je ne l'ai vu qu'en ligne de commande Windows, limitée à 256 caractères (tout est limité là bas ). Jamais vu en shell.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  17. #17
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Pourtant, à une époque (pas si lointaine?), on avait bien:
    ridiculously long PATH truncated

  18. #18
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Y a pas longtemps j'avais posté ici un truc trouvé sur internet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #ifndef _LINUX_LIMITS_H 
    #define _LINUX_LIMITS_H 
    #define NR_OPEN           1024 
     
    #define NGROUPS_MAX    65536   /* supplemental group IDs are available */ 
     
    #define ARG_MAX       131072   /* # bytes of args + environ for exec() */ 
    #define LINK_MAX         127   /* # links a file may have */ 
    #define MAX_CANON        255   /* size of the canonical input queue */ 
    #define MAX_INPUT        255   /* size of the type-ahead buffer */ 
    #define NAME_MAX         255   /* # chars in a file name */ 
    #define PATH_MAX        4096   /* # chars in a path name including nul */ 
    #define PIPE_BUF        4096   /* # bytes in atomic write to a pipe */ 
    #define XATTR_NAME_MAX   255   /* # chars in an extended attribute name */ 
    #define XATTR_SIZE_MAX 65536   /* size of an extended attribute value (64k) */ 
    #define XATTR_LIST_MAX 65536   /* size of extended attribute namelist (64k) */ 
    #define RTSIG_MAX     32 
     
    #endif
    Je ne sais pas ce que ça vaut. Je teste donc la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define PATH_MAX        4096   /* # chars in a path name including nul */
    fichier limits.bash executable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash
     
    pointDeDepart=/home/florian/Documents/MondeMathematiques
    rajout=/../../../../home/florian/Documents/MondeMathematiques
     
    cobaye=$pointDeDepart
     
    while ls $cobaye >/dev/null
    do 
       cobaye=$cobaye$rajout
       grep -o $rajout <<< $cobaye |grep -c ^
     
    done
    ls dans un script? Non mais N_bah est en weekend....

    Et la sortie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    limits.bash &> resultat.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    ls: impossible d'accéder à /home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques/../../../../home/florian/Documents/MondeMathematiques: Nom de fichier trop long
    Nom de fichier trop long. Et alors?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo $((54*76+42))
    4146
    La limite de 4096 semble respectée chez moi
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. [XL-97] Concaténer plusieurs fichiers dans un seul ?
    Par alucard_xs dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/02/2014, 16h03
  2. comment zipper plusieurs fichiers dans un seul
    Par diamonds dans le forum Linux
    Réponses: 4
    Dernier message: 22/03/2007, 20h15
  3. exporter cellules de plusieurs fichiers sur un seul fichier
    Par sapeur37 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/11/2006, 09h46
  4. Regrouper plusieurs fichiers en un seul
    Par kurkaine dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/09/2006, 20h14
  5. [XML][Java] parser plusieurs fichiers en un seul arbre DOM ?
    Par mrlenul dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/11/2005, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo