我需要在shell脚本中访问两个文件。唯一的问题是,我不确定文件名是什么,因为它是系统生成的。文件名的一部分总是不变的,但其余部分是系统生成的,因此可能会有所不同。我不知道如何访问这些文件?
示例文件名
输入1
MyFile1.yyyy-mm-dd_xx:yy:zz.log
在这种情况下,我知道MyFile1部分是所有文件的常量,其他部分根据日期和时间而变化。我可以使用date +%Y-%m-%d
来MyFile1.yyyy-mm-dd_
,但我不知道如何选择正确的文件。请注意,每天只有一个文件。在unix中,下面的命令为我提供了正确的文件。
unix> ls MyFile1.yyyy-mm-dd*
类型2
MyFile2.yyyymmddxxyyxx.RandomText.SomeNumber.txt
在这个文件中,你可以看到Myfile2部分是常见的,我可以用Date +%Y%m%d
来获取(当前日期)MyFile2.yyyymmdd
,再次不清楚如何从那里开始。在unix中下面的命令给了我正确的文件。我还需要在文件2的dd列中有前一个日期。
unix> ls MyFile2.yyyymmdd*
基本上在我的shell脚本中寻找以下行
#!/bin/ksh
timeA=$(date +%Y-%m-%d)
timeB=$(date +%Y%m)
sysD=$(date +%d)
sysD=$((sysD-1))
filename1=($Home/folder/MyFile1.$timeA*)
filename2=($Home/folder/MyFile2.$timeB$sysD*)
只是不确定如何获取这两个文件的RHS。
运行上述脚本时的结果如下
Script.ksh[8]: syntax error at line 8 : `(' unexpected
答案 0 :(得分:2)
也许这个
$ file=(MyFile1.yyyy-mm-dd*)
$ echo $file
MyFile1.yyyy-mm-dd_xx:yy:zz.log
应该注意,您必须以这种方式声明变量
foo=123
不是
foo = 123
仔细注意,不好
filename1=$($HOME/folder/MyFile1.$timeA*)
好
filename1=($HOME/folder/MyFile1.$timeA*)