ディレクトリ内のファイルを処理するための小さなbash*スクリプトを作成しました。ファイルには、ファイルの処理方法を決定する特定の命名規則があります。
ファイル名は地理的な起点で始まり、ファイル名にキーワードが含まれており、処理方法を決定します。
これが私のスクリプトの簡略版です:
DATA_DIRECTORY=./data
array=( 'uk' 'usa' 'fra' 'ukr' )
for i in "${array[@]}"
do
echo "#################################################"
echo "Loop index : $i"
echo "#################################################"
# process baboon data for the current country
for filename in $DATA_DIRECTORY/$i_*_baboon*.csv; do
echo "Processing file: $filename in loop: $i"
done
# process whale data for the current country
for filename in $DATA_DIRECTORY/$i_*_whale*.csv; do
echo "Processing file: $filename in loop: $i"
done
# process lion data for the current country
for filename in $DATA_DIRECTORY/$i_*_lion*.csv; do
echo "Processing file: $filename in loop: $i"
done
done
上記のスクリプトが次のようにファイルと一致することを期待しています。us_2007_deaths_caused_by_baboon.csvという名前のファイルは、ループカウンター変数が「us」の場合とループ中に1回処理されますfor filename in $DATA_DIRECTORY/$i_*_baboon*.csv;
。ただし、マッチングは期待どおりに機能せず、それぞれ(forループにネストされています)がディレクトリ内のすべてのファイルをループしています-これは私が望むものではありません。
ファイル名に基づいてファイルをパターンマッチングするにはどうすればよいですか?
*注:Ubuntu10.0.4でbashバージョン4.1.5を使用しています