Dans l'ordre (listes non exhaustives) :
man bash / man sh / man ksh selon le shell utilisé pour écrire le script
man ls / man find selon la méthode voulue pour utiliser la commande de compression ci-après
man gzip / man bzip2 / man zip / man compress selon le format de l'archive désirée....
A toi de jouer !
Je suggère (les "_" sont là uniquement pour la lisibilité) :
for i in *.txt ; do
_ _ gzip -c <$i >${i%.txt}.gz
_ _ echo $i comprimé en ${i%.txt}.gz
done
La syntaxe ${i%.txt} enlève le ".txt" final du contenu de la variable "i" et permet ensuite de changer l'extension en rajoutant ".gz" (cf le man de bash, à la partie "Remplacement des paramètres").
Si tu veux simplement compresser tous les fichiers d'un répertoire donné, qu'il n'y a pas de sous-répertoire et qu'il n'y a pas trop de fichiers (en gros, il ne faut pas que ça dépasse de trop les 1000 fichiers), un simple
gzip *
dans le répertoire voulu ou
gzip /chemin/vers/ton/répertoire/*
devrait suffire.
Suivant tes goûts, tu peux remplacer gzip par compress ou bzip2, mais pas par zip (la façon de passer les arguments à zip est différente).
S'il y a beaucoup de fichiers dans le répertoire, il reste la possibilité du xargs :
ls -Q | xargs -n 500 gzip
[-Q permet de bien gérer les fichiers avec des espaces dans leur nom]
S'il faut prendre en compte les fichiers dans une arborescence, alors la solution d'omnikron me semble bien.
Le script d'Ellendhel crée une archive compressée par fichier, ce qui me semble un peu lourd.
# Ah, la la...
Posté par Gyro Gearllose . Évalué à 3.
man bash / man sh / man ksh selon le shell utilisé pour écrire le script
man ls / man find selon la méthode voulue pour utiliser la commande de compression ci-après
man gzip / man bzip2 / man zip / man compress selon le format de l'archive désirée....
A toi de jouer !
# find + gzip
Posté par omnikron . Évalué à 5.
find toto/ -type f -exec gzip {} \;
[^] # Re: find + gzip
Posté par milounix . Évalué à 1.
zipper les fichiers d'origine de format "aaaaaa.txt" en "aaaaaa.gz" et pouvoir ensuite récupérer le nom du fichier de type "aaaaaa"
Merci
[^] # Re: find + gzip
Posté par Olivier Jeannet . Évalué à 1.
for i in *.txt ; do
_ _ gzip -c <$i >${i%.txt}.gz
_ _ echo $i comprimé en ${i%.txt}.gz
done
La syntaxe ${i%.txt} enlève le ".txt" final du contenu de la variable "i" et permet ensuite de changer l'extension en rajoutant ".gz" (cf le man de bash, à la partie "Remplacement des paramètres").
# Base de script
Posté par Ellendhel (site web personnel) . Évalué à 3.
#!/bin/bash
for fichier in *
do
/bin/tar cvfz $fichier.tar.gz $fichier
done
# Faire simple...
Posté par JJD . Évalué à 4.
Si tu veux simplement compresser tous les fichiers d'un répertoire donné, qu'il n'y a pas de sous-répertoire et qu'il n'y a pas trop de fichiers (en gros, il ne faut pas que ça dépasse de trop les 1000 fichiers), un simple
gzip *
dans le répertoire voulu ou
gzip /chemin/vers/ton/répertoire/*
devrait suffire.
Suivant tes goûts, tu peux remplacer gzip par compress ou bzip2, mais pas par zip (la façon de passer les arguments à zip est différente).
S'il y a beaucoup de fichiers dans le répertoire, il reste la possibilité du xargs :
ls -Q | xargs -n 500 gzip
[-Q permet de bien gérer les fichiers avec des espaces dans leur nom]
S'il faut prendre en compte les fichiers dans une arborescence, alors la solution d'omnikron me semble bien.
Le script d'Ellendhel crée une archive compressée par fichier, ce qui me semble un peu lourd.
A+
JJD
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.