J'ai besoin de traiter un grand nombre de fichiers dans un répertoire. Les fichiers peuvent être partitionnés en plusieurs groupes, en fonction des noms de fichiers. C'est-à-dire que les noms de fichiers peuvent correspondre à un modèle auquel ils appartiennent. Par exemple, les noms sont comme ceci:
etc ...
Chaque `` groupe '' a une méthodologie de traitement différente (c'est-à-dire qu'une commande différente est appelée pour le traitement).
Je veux écrire un script bash pour:
Je cours sur Ubuntu 10.0.4. Je suis nouveau sur bash et j'apprécierais l'extrait de code squelette qui m'aidera à commencer à écrire ce script.
Le moyen le plus simple consiste probablement à répéter chaque groupe séparément. Cela contourne complètement le problème d'analyse.
DIRECTORY=.
for i in $DIRECTORY/YYYYMMDD_*_bulk_import.csv; do
# Process $i
done
for i in $DIRECTORY/YYYYMMDD_*_genstats_import.csv; do
# Process $i
done
for i in $DIRECTORY/YYYYMMDD_*allstats.csv; do
# Process $i
done
Définissez DIRECTORY
dans le répertoire que vous souhaitez rechercher. Le défaut .
recherchera le répertoire de travail actuel.
Voici l'itération de base sur les fichiers, avec un commutateur pour déterminer le type de fichier.
#!/bin/bash
for f in *; do
case $f in
[0-9]*_bulk_import.csv)
echo $f case 1
;;
[0-9]*_genstats_import.csv)
echo $f case 2
;;
[0-9]*allstats.csv)
echo $f case 3
;;
esac
done