BASH+lister les fichiers d'un répertoire

Résolu/Fermé
steffy74 Messages postés 25 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 5 mai 2009 - 17 févr. 2009 à 13:56
steffy74 Messages postés 25 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 5 mai 2009 - 18 févr. 2009 à 15:26
Bonjour,

J'ai un répertoire dans lequel sont déposés des fichiers à traiter ensuite. Ces fichiers doivent être nommés de la façon suivante : AAA_D_<date>
J'ai un fichier qui contient une liste des "codes" à traiter afin de ne pas traiter n'importe quel fichier qui aurait été déposé la par erreur.
Je fais donc :
for i in `find ./monRepertoire -type f `
		do
                      nom_fichier=$(echo $i | awk 'BEGIN{FS="/"} {print $3}')
                      code = "$(echo $nom_fichier | awk -F_ '{print $1}')_$(echo $nom_fichier | awk -F_ '{print $2}')"
               done
     


ex : dans le repertoire j'ai "AAA_D_200902.txt","BBB_D_2009.txt" et par erreur "nouveau document texte .txt"

pour AAA_D_200902.txt : code=AAA_D => correct (idem pour BBB_D_200902)

Le fichier qui comporte des espaces me pose probleme car le find découpe par rapport à l'espace (si j'ai bien compris)
Comment pourrais-je dans un premier temps déplacer les fichiers (dans un repertoire "poubelle" qui ne sont pas de la forme 3caracteres_1cararctere_<date> ??

Je ne suis pas sure d'avoir été très claire mais si quelqu'un avait un tuyau
Merci

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 févr. 2009 à 18:58
Salut,
[rep]$ tree
.
|-- AAA_D_200902.txt
|-- BBB_D_2009.txt
|-- nouveau document texte .txt
`-- poubelle

1 directory, 3 files

[rep]$ for fich in "$(ls *.* | egrep -v '[A-Z]{3}_[A-Z]{1}_.*')"; do mv "$fich" poubelle/ ;done

[rep]$ tree
.
|-- AAA_D_200902.txt
|-- BBB_D_2009.txt
`-- poubelle
    `-- nouveau document texte .txt

1 directory, 3 files

[rep]$ 
;-))
2