Shell ls和grep来自不同的目录
我得到了以下目录:Shell ls和grep来自不同的目录,shell,grep,ls,Shell,Grep,Ls,我得到了以下目录: . |__ scripts | |__ logs 在我的日志文件夹中,我得到的文件格式如下: AAAAAAA_X1-09-09-2018.log BBBBBBB_Y2-09-09-2018.log CCCCCCC_Z3-09-09-2018.log 当我从logs运行命令ls | grep aaaaaaaaa*.log“时,它工作正常: user /my/path/logs #> ls | grep AAAA*log AAAAAAA_X1-09-09-201
.
|__ scripts
|
|__ logs
在我的日志
文件夹中,我得到的文件格式如下:
AAAAAAA_X1-09-09-2018.log
BBBBBBB_Y2-09-09-2018.log
CCCCCCC_Z3-09-09-2018.log
当我从logs
运行命令ls | grep aaaaaaaaa*.log“
时,它工作正常:
user /my/path/logs #> ls | grep AAAA*log
AAAAAAA_X1-09-09-2018.log
但是如果从scripts
目录运行,我没有找到匹配项:
user /my/path/scripts #> ls ../logs | grep AAAAA*log
我注意到命令ls../logs | grep aaaaaa*
可以工作,但我必须强制匹配.log
(该目录中有时会生成其他文件)。我可以通过执行以下操作来解决此问题:
ls../logs | grep aaaaaaa*| grep log
但我想知道,为什么
ls../logs | grep aaaaaaa*log
不能从脚本运行,而日志运行?最好先将目录更改为log
,如下所示:-
cd /full/path/log
ls | grep AAAA*log
cd - #go back to the original path
在脚本中修改以上内容,然后重试
另外,请尝试按照Kamil Cuk给出的指示进行操作。grep AAAA*log
实际上就是grep aaaaaaaa\u X1-09-09-2018。log
。*
在grep运行之前被检查。好吧,看起来,如果通配符搜索足够的话,那么就不需要使用正则表达式了。