Forum Programmation.shell Script shell renommage automatique de fichier

Posté par  .
Étiquettes : aucune
0
8
nov.
2006
Bonjour,

suite à une récupération de fichiers sur un zip
defectueux, je me
retrouve avec les fichiers récupérés en vrac sous
un nom arbitrairement
attribué par l'outil de récupération.

J'ai donc fait 2 petits scripts shell pour d'une
part remettre les fichiers
dans les bon répertoires et d'autre part pour
renommer correctement les fichiers
en question.

Chacun des fichiers contient les informations en
clair necessaires a ces opérations.
Le tri des fichiers par date se passe correctement
mais pas le renommage des fichiers.
Il est probable que je ne m'y prend pas bien.

Voici mon code, il attend en paramètres: la date
qui va permettre de créer le répertoire
et les noms des fichiers (variable)


#!/bin/bash

if [ $# -gt 1 ]
#si il y a plus d'un argument
then
REP=$1
echo creation du repertoire $REP
mkdir $REP #on cree le repertoire

#j'enleve le premier paramètre
shift

# je parcours les paramètres restants (noms des
fichiers)
for arg in $@
do #on copie tous les fichiers dans le repertoire
cree
NOMFIC=""

if grep -q "type.*001" test/$arg;
then
NOMFIC=type001.dbf
elif grep -q "type.*002" test/$arg;
then
NOMFIC=type002.dbf
elif grep -q "type.*003" test/$arg;
then
NOMFIC=type003.dbf
elif grep -q "type.*051" test/$arg;
then
NOMFIC=type051.dbf
elif grep -q "type.*151" test/$arg;
then
NOMFIC=type151.dbf
else
NOMFIC=$arg
fi

cp test/$arg $REP/$NOMFIC

done
else
exit
fi


Qu'en pensez vous?

Merci

--
Glut
  • # un petit exemple de ce que tu mets comme ligne d'execution

    Posté par  . Évalué à 2.

    serai pas mal ( par exemple si tu as tenté de mettre un espace dans le nom du répertoire c'est normal que ça plante toujours penser que
    "${var}toto" fais bien plus souvent ce que l'on veut que $vartoto

    ensuite je quel est le résultat? savoir comment ça plante aide grandement au débuggage...

    et les commandes utilisée ( grep -q "type.*051" test/$arg ) renvoient elles bien le bon résultat ?
    est ce que tu as des fichier avec des espaces dans leur nom? si c'est le cas tu risque d'avoir du mal a faire fonctionner ce script si c'est le cas

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: un petit exemple de ce que tu mets comme ligne d'execution

      Posté par  . Évalué à 1.

      Bonjour,

      en fait les fichiers ne sont pas renommés correctement,il semble que le contenu de ma variable $NOMFIC n'est pas correct.

      Il n'y a pas d'espace dans les noms de fichiers ils portent tous un nom du style f154782.dbf

      Exemple de paramètres reçus par le script: "20050102 f123456.dbf f456789.dfb f987654.dbf" ( le nombre de fichiers dbf peut être variable)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.