unix中的bash文件检查器,存储另一个变量只能使用的文件

r6l8ljro  于 2021-06-24  发布在  Hive
关注(0)|答案(0)|浏览(234)

配置单元表存储源文件的元数据:

Hive_Table: SRC_Meta
Col_Table_Name  Col_SRCFILENAME_Name    col_Header_Names
Table1          FileName1               col1 string, col2 bigint........
Table2          FileName2
...
.
.

.
.
Table100        FileName100

unix文件位置:文件被放在这里,并不是所有100个源文件都可以随时使用。假设我收到了100多个文件中的5到6个

Source files.
/tmp/Filename1.txt
/tmp/FileName13.txt
/tmp/FileName19.txt
/tmp/Filename81.txt
/tmp/FileName94.txt

使用配置单元中的元数据表,提取srcfilenamenames并将其保存到变量中,然后使用usinf for循环将其传递到文件检查器(如果可用)打印为可用(如果不可用)

SRCFILE=($(hive -S -e "SELECT DISTINCT LTRIM(RTRIM(Col_SRCFILENAME_Name))
FROM SRC_Meta))

for SRCFILENAME in "${SRCFILE[@]}"
do

echo "SRCFILENAME NAME IS $SRCFILENAME"

if  ls ${SRCFILENAME}*.txt 1> /dev/null 2>&1;  then

mv -f ${SRCFILENAME}*.txt /tmp/archive/

echo "***************File is available and moved to the Script source dir*********"

else
echo "${SRCFILENAME} not found in the Source directory"
echo
echo
fi

done

问题1:但是我必须处理不区分大小写的问题,在从配置单元搜索时,在unix文件夹中查找不区分大小写的文件名,并尝试使用这个文件

if  ls `ls | grep -i ${SRCFILENAME}*.txt` 1> /dev/null 2>&1;  then

在取出文件时,上面的一个没有按预期工作
问题2:将文件移出归档文件夹后,我必须使用srcfilename变量创建表,但我必须再次从配置单元表中获取表名,并且必须执行for循环。
在这个场景中,再次使用srcfilename逐个传递100+个表是很费时的,相反,有没有办法绕过并最小化可用的srcfilename,而只传递可用的srcfilename作为变量来获取其余的元信息以创建配置单元表?假设还有其他文件在里面 /tmp/archive/ 文件夹

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题