在封闭的应用程序中,我必须在变量($ 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服务器
谢谢!
答案 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 %
也有效