BASH+lister les fichiers d'un répertoire [Résolu/Fermé]

Signaler
Messages postés
25
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
5 mai 2009
-
Messages postés
25
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
5 mai 2009
-
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

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 836
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
25
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
5 mai 2009
1
Merci,
Je vais prendre votre solution car j'avais trouvé une autre astuce mais la votre me convient mieux.
En fait je commençais par parcourir mes fichiers et remplacer les espaces par des _ et ensuite je les déplaçais dans poubelle

Merci