【问题标题】:ls and grep from different directory来自不同目录的 ls 和 grep
【发布时间】:2018-09-10 09:35:52
【问题描述】:

我有以下目录:

.
|__ scripts
|    
|__ logs

在我的logs 文件夹中,我得到了这样格式化的文件:

AAAAAAA_X1-09-09-2018.log
BBBBBBB_Y2-09-09-2018.log
CCCCCCC_Z3-09-09-2018.log

当我从logs 运行命令ls | grep AAAAAAA*.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 AAAAA* 可以工作,但我必须强制匹配.log(有时会在该目录中生成其他文件)。我可以通过这样做来解决这个问题:

ls ../logs | grep AAAAA* | grep log

但我想知道,为什么 ls ../logs | grep AAAAA*log 不适用于 scriptslogs

【问题讨论】:

  • grep AAAA*log 真的只是grep AAAAAAA_X1-09-09-2018.log* 在运行 grep 之前已扩展。

标签: shell grep ls


【解决方案1】:

最好先将目录更改为log,如下所示:-

cd /full/path/log
ls | grep AAAA*log
cd - #go back to the original path

在你的脚本中修改上面并尝试。

也尝试按照 Kamil Cuk 的指示进行操作。

【讨论】:

  • 嗯,好像是Kamil is correct,所以如果通配符搜索就足够了,就不需要使用正则表达式了。
猜你喜欢
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-31
  • 2013-11-08
  • 2014-11-30
相关资源
最近更新 更多