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运行之前被检查。好吧,看起来,如果通配符搜索足够的话,那么就不需要使用正则表达式了。