检索bash / shell编程的文件名

时间:2013-04-15 23:58:31

标签: bash shell unix

我需要在shell脚本中访问两个文件。唯一的问题是,我不确定文件名是什么,因为它是系统生成的。文件名的一部分总是不变的,但其余部分是系统生成的,因此可能会有所不同。我不知道如何访问这些文件?

示例文件名

输入1

MyFile1.yyyy-mm-dd_xx:yy:zz.log

在这种情况下,我知道MyFile1部分是所有文件的常量,其他部分根据日期和时间而变化。我可以使用date +%Y-%m-%dMyFile1.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

1 个答案:

答案 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*)