Concaténation de fichiers gz en ligne de commande

Résolu/Fermé
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - Modifié le 5 févr. 2018 à 16:38
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 22 févr. 2018 à 17:11
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



A voir également:

7 réponses

Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
6 févr. 2018 à 06:47
Hello,

on appel ca merger :)

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

a plus dans lbus
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
6 févr. 2018 à 09:17
man tar

:)

--
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
6 févr. 2018 à 09:44
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.
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
6 févr. 2018 à 11:54
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

--
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
6 févr. 2018 à 07:47
Oui merci cela je me doute que l'on peut faire cela dans un script mais cela ne me donne pas plus d'info!
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 févr. 2018 à 08:31
hello
ce sont des fichiers texte ?
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
Modifié le 6 févr. 2018 à 08:54
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
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 févr. 2018 à 11:38
comment doit s'appeller le fichier de destination ?
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 févr. 2018 à 12:27
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
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
6 févr. 2018 à 12:35
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..
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 févr. 2018 à 12:55
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
0

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

Posez votre question
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
6 févr. 2018 à 14:16
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.
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 févr. 2018 à 15:23
shopt -s extglob pour que bash traite +([0-9]) (1 ou plusieurs chiffres) dans les noms de fichier, cf : Pathname Expansion
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
7 févr. 2018 à 07:47
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
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
22 févr. 2018 à 17:11
Cool merci
0