如何根据文件名的格式自动赋值参数?

如何根据文件名的格式自动赋值参数?

假设有两种类型的 csv 文件,文件名格式如下:

Ass_B1_v1_<ShortName>_<ddmmyyyy>.CSV
CATUpd_v1_<ShortName>_<ddmmyyyy>.CSV

或者可以将格式改为:

Ass_B1_v1_<ShortName>_<Name>_<ddmmyyyy>.CSV
CATUpd_v1_<ShortName>_<Name>_<ddmmyyyy>.CSV

它们<ShortName>是以下的缩写形式Name

Name|ShortName
A1 Dun|A1
Ant Cap|AC
.
.
.

我有一个列表,其中包含Part_Name&Target_Directory
Part_Name=echo ${Name} | sed -e 's/ /_/'
Target_dir=D:\GFTPRoot\Receive\${Part_Name}\LIST\ASCII\OUT

列表.txt:

Part_Name|Target_Directory
A1_Dun|D:\GFTPRoot\Receive\A1_Dun\LIST\ASCII\OUT
Ant_Cap|D:\GFTPRoot\Receive\Ant_Cap\LIST\ASCII\OUT
Bri_Deb|D:\GFTPRoot\Receive\Bri_Deb\LIST\ASCII\OUT
.
.
.

我通常对此进行硬编码并通过从列表中读取参数来分配参数
(例如,List.txt)

[ ${ShortName} = "A1" ] && {
part=`grep ^"$A1_Dun" ${List} | cut -d"|" -f1`
Target_dir=`grep ^"$A1_Dun" ${List} | cut -d"|" -f2`}

[ ${ShortName} = "AC" ] && {
part=`grep "$Ant_Cap" ${List} | cut -d"|" -f1`
Target_dir=`grep "$Ant_Cap" ${List} | cut -d"|" -f2`}

.
.
.

for file in `find ${path} -name "*${ShortName}*" -type f`
do
.
.

名单很长。我希望使用模式搜索所有 csv 文件*$ShortName*,而不是硬编码,然后将$Part_Name&分配$Target_dir$ShortName.

例如,对于具有特定模式的所有 csv 文件*$ShortName*,为具有特定模式的每个文件子
集分配参数Part_Name& 。Target_dir

相关内容