Menu

Concaténation de fichiers gz en ligne de commande [Résolu/Fermé]

Messages postés
552
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
20 mai 2019
-
Bonjour,

J'ai des fichiers nommés :

fichier1.gz
fichier2.gz
fichier3.gz
fichier4.gz
etc..


et des fichiers nommés :

fichier1_src.gz
fichier2_src.gz
fichier3_src.gz
fichier4_src.gz
etc..


et je souhaiterais concaténer ses fichiers par leur numéro c'est a dire :

fichier1.gz avec fichier1_src.gz
fichier2.gz avec fichier2_src.gz
fichier3.gz avec fichier3_src.gz
fichier4.gz avec fichier4_src.gz
etc..


Comment faire et avec quelle(s) commandes(s).

Merci beaucoup



Afficher la suite 

7 réponses

Messages postés
1349
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
9 mai 2019
66
0
Merci
Hello,

on appel ca merger :)

Tu dois pouvoir faire un script en bash qui fait ca.

a plus dans lbus
Exileur
Messages postés
1349
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
9 mai 2019
66 -
man tar

:)

--
pcsystemd
Messages postés
552
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
20 mai 2019
16 -
L'option -A de tar permet de concaténer mais le souci est que je souhaite concaténer les ficheirs selon leur numéro présent dans leur nom donc fichier1 avec fichier1srv et j'en ai plus de 100 donc je peux pas m'amuser a faire cela manuellement.
Exileur
Messages postés
1349
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
9 mai 2019
66 -
faut faire un truc genre

for i in seq 1 10
do
tar nomdefichier-$i.gz nomdefichier_different$i.gz
done


ou 10 = l'id maximum de ton fichier

--
Messages postés
552
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
20 mai 2019
16
0
Merci
Oui merci cela je me doute que l'on peut faire cela dans un script mais cela ne me donne pas plus d'info!
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4320
0
Merci
hello
ce sont des fichiers texte ?
pcsystemd
Messages postés
552
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
20 mai 2019
16 -
Hello,

Ce sont des logs apache zippés en logs.gz

en fait j'ai deux serveurs apaches et je dois concaténer les logs du serveur 1 et du serveur 2.

Les logs du serveur 1 sont nommés :
access.log.1.gz
access.log.2.gz
etc..

et les fichiers du serveur 2 :

access.log.1.srv.gz
access.log.2.srv.gz
etc..

Merci
dubcek
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4320 -
comment doit s'appeller le fichier de destination ?
dubcek
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4320 -
en appellant la destination access_new.log.*.gz
shopt -s extglob
for f in access.log.+([0-9]).gz; do gzip -cd $f ${f/.gz/.srv.gz} | gzip -c > ${f/./_new.}; done

les fichiers originaux ne sont pas modifiés
Messages postés
552
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
20 mai 2019
16
0
Merci
Pour chaque concaténation de deux fichiers, il doit s'appeller : acces.log.1.merged.gz par exemple donc :

acces.log.1.merged.gz
acces.log.2.merged.gz
etc..
dubcek
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4320 -
shopt -s extglob
for f in access.log.+([0-9]).gz; do gzip -cd $f ${f/.gz/.srv.gz} | gzip -c > ${f/.gz/.merged.gz}; done
Messages postés
552
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
20 mai 2019
16
0
Merci
Merci dubcek comme d'hab tu m'as sauvé!

J'ai parcouru et compris ta commande qui sincèrement est trop complexe pour moi. De plus je ne connaissais pas la commande shopt.
dubcek
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4320 -
shopt -s extglob pour que bash traite +([0-9]) (1 ou plusieurs chiffres) dans les noms de fichier, cf : Pathname Expansion
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4320
0
Merci
il n'y a pas besoin de décompresser pour concaténer, ceci suffit
shopt -s extglob
for f in access.log.+([0-9]).gz; do cat $f ${f/.gz/.srv.gz} > ${f/.gz/.merged.gz}; done
Messages postés
552
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
20 mai 2019
16
0
Merci
Cool merci