2

我需要访问我的 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
4

1 回答 1

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*)
于 2013-04-16T00:30:15.947 回答