一行 shell 命令查找模式文件名
one line shell command to find a pattern filename
在封闭的应用程序中,我必须在变量 ($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 -> grep A00_ABC
我正在使用带有 Linux CentOS
的服务器
谢谢!
另一种方法
$ ls *A00_ABC
gA00_ABC xA00_ABC
$ text="A00_ABC_OK"
$ ls $(echo $text | sed 's/_OK//;s/^/*/')
gA00_ABC xA00_ABC
$
echo $text | sed 's/_OK//;s/^/*/' | xargs -I % find . -name %
也有效
通配符由 shell 扩展,但 xargs
在添加来自其标准输入的参数后不使用 shell 来执行命令。
您可以直接将通配符放入命令中,而不是将通配符放入变量中。您可以使用 shell 的内置参数扩展替换运算符从值中删除 _OK
。
ls *"${text/_OK/}"
在封闭的应用程序中,我必须在变量 ($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 -> grep A00_ABC
我正在使用带有 Linux CentOS
的服务器谢谢!
另一种方法
$ ls *A00_ABC
gA00_ABC xA00_ABC
$ text="A00_ABC_OK"
$ ls $(echo $text | sed 's/_OK//;s/^/*/')
gA00_ABC xA00_ABC
$
echo $text | sed 's/_OK//;s/^/*/' | xargs -I % find . -name %
也有效
通配符由 shell 扩展,但 xargs
在添加来自其标准输入的参数后不使用 shell 来执行命令。
您可以直接将通配符放入命令中,而不是将通配符放入变量中。您可以使用 shell 的内置参数扩展替换运算符从值中删除 _OK
。
ls *"${text/_OK/}"