一行shell命令,用于查找模式文件名

时间:2016-03-03 01:29:52

标签: linux bash shell csh

在封闭的应用程序中,我必须在变量($ text)中捕获一个字符串,如:

A00_ABC_OK

,我必须过滤单个文件,如:

XA00_ABC

其中X可以是任何字符。

在这个关闭的应用程序上,我只能放一行shell命令,脚本不起作用。我尝试了这个不同的命令,但没有人工作

echo $text | sed 's/_OK//;s/^/*/' | xargs ls

A00_ABC_OK - > * A00_ABC - > ls * A00_ABC =不工作

echo $text | sed 's/_OK//;s/^/*/' | xargs find -name

A00_ABC_OK - > * A00_ABC - > find -name * A00_ABC =不工作

ls -1 | grep < echo $text | sed 's/_OK//;'

ls -1 - &gt; grep A00_ABC

我正在使用Linux CentOS服务器

谢谢!

3 个答案:

答案 0 :(得分:2)

通配符由shell扩展,但xargs在添加标准输入的参数后,不会使用shell执行命令。

您可以将其放入命令中,而不是将通配符放入变量中。您可以使用shell的内置参数扩展替换运算符从值中删除_OK

ls *"${text/_OK/}"

答案 1 :(得分:0)

另一种你可以做到的方式

$ ls *A00_ABC
gA00_ABC  xA00_ABC
$ text="A00_ABC_OK"
$ ls $(echo $text | sed 's/_OK//;s/^/*/')
gA00_ABC  xA00_ABC
$

答案 2 :(得分:0)

echo $text | sed 's/_OK//;s/^/*/' | xargs -I % find . -name %也有效