Script concaténer fichier
Résolu
labas
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
Je voudrais écrire un script shell qui pour tous les fichiers de format .txt se trouvant dans un répertoire donné, on doit :
1. regarder si le fichier contient « Version : »,
2. alors on compte le nombre de ligne (nb_ligne) qu'il contient excepté la première et la dernière
3. puis on le concaténer dans un fichier et enfin on enrichie un fichier log (nb-ligne, date, fichier) et on déplace le fichier dans répertoire-traiter.
4. sinon (le fichier ne contient pas version) on le déplace dans répertoire-erreur
Exemple de fichier correct:
E;E;E;E
1;2 ;3 ;3
2;3 ;3 ;5
1;2 ;2 ;5
Version :
On doit concaténer dans all_file.txt avec nb_ligne=3 faire un fichier log
On le copie dans fichier correct
1;2 ;3 ;3
2;3 ;3 ;5
1;2 ;2 ;5
Exemple de fichier incorrect:
E;E;E;E
1;2 ;3 ;3
2;3 ;3 ;5
1;2 ;2 ;5
On le déplace dans le répertoire erreur en renseignant le log
TROUVE=0
Début
for fichier in *.TXT do
echo $fichier
echo grep -v "^$" $fichier | wc -l
if [ $? -eq $TROUVE ] then
$nombre_fichier=wc -l $fichier
nomfichier=$fichier
cp $nomfichier $CHEMIN/rep_traiter/
cat $nomfichier > $CHEMIN/rep_operats/FTIERS_ALL.txt
let "nombre_fichier += 1"
else
mv $nomfichier $CHEMIN/rep_erreurs/$nomfichier
fi
done
Merci de lire ce post
Je voudrais écrire un script shell qui pour tous les fichiers de format .txt se trouvant dans un répertoire donné, on doit :
1. regarder si le fichier contient « Version : »,
2. alors on compte le nombre de ligne (nb_ligne) qu'il contient excepté la première et la dernière
3. puis on le concaténer dans un fichier et enfin on enrichie un fichier log (nb-ligne, date, fichier) et on déplace le fichier dans répertoire-traiter.
4. sinon (le fichier ne contient pas version) on le déplace dans répertoire-erreur
Exemple de fichier correct:
E;E;E;E
1;2 ;3 ;3
2;3 ;3 ;5
1;2 ;2 ;5
Version :
On doit concaténer dans all_file.txt avec nb_ligne=3 faire un fichier log
On le copie dans fichier correct
1;2 ;3 ;3
2;3 ;3 ;5
1;2 ;2 ;5
Exemple de fichier incorrect:
E;E;E;E
1;2 ;3 ;3
2;3 ;3 ;5
1;2 ;2 ;5
On le déplace dans le répertoire erreur en renseignant le log
TROUVE=0
Début
for fichier in *.TXT do
echo $fichier
echo grep -v "^$" $fichier | wc -l
if [ $? -eq $TROUVE ] then
$nombre_fichier=wc -l $fichier
nomfichier=$fichier
cp $nomfichier $CHEMIN/rep_traiter/
cat $nomfichier > $CHEMIN/rep_operats/FTIERS_ALL.txt
let "nombre_fichier += 1"
else
mv $nomfichier $CHEMIN/rep_erreurs/$nomfichier
fi
done
Merci de lire ce post
A voir également:
- Script concaténer fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
2 réponses
Salut,
Ton énoncé est un peu incohérente par rapport à ton script ;-\
Je verrai plus un truc dans ce genre (j'ai pas testé par contre) :
Ton énoncé est un peu incohérente par rapport à ton script ;-\
Je verrai plus un truc dans ce genre (j'ai pas testé par contre) :
#! /bin/bash
# Définition variables
DATE=$(date "+%d/%m/%Y")
for fichier in "*.TXT"
do
grep "Version :" "$fichier" >/dev/null
retval=$?
case "$retval" in
0) nbre_ligne=$(( $(cat $fichier | wc -l) - 2 ))
sed -n '1d;$d;p' "$fichier" >> $CHEMIN/rep_operats/FTIERS_ALL.txt
echo "$fichier : $nbre_ligne : $DATE" >> $CHEMIN/rep_operats/FTIERS_ALL.txt
mv -f "$fichier" $CHEMIN/rep_traiter/
;;
1) mv -f "$fichier" $CHEMIN/rep_erreurs/
;;
*) echo "ERREUR"
exit 3
;;
esac
done;-))