我正在尝试使用以下命令打开大量 .xml 文件:
ls | grep navigation-drawer-config- | open
但是,这不起作用。根据我对管道的理解,这应该将 grep 在与该名称模式匹配的目录中找到的内容管道化到 open 中,然后 open 应该会打开文件。我可以通过手动执行如下操作来打开它们:
open file1 file2
但是,当我使用第一个命令时,我返回了 open 命令的帮助屏幕。您无法将 grep 与 open 结合使用吗?还是我遗漏了其他内容?
答案1
问题在于您没有将文件名添加到 open 命令中,而是将 grep 的输出输入到 open 命令中。
有几种方法可以做到这一点,包括
open navigation-drawer-config-*
这将使用GLOB 扩展这可能是最快和最简单的方法。
或者
open `ls | grep "navigation-drawer-config-"`
它执行 ls 和 grep,然后将输出作为 open 命令的参数。
或者
find . -name "navigation-drawer-config-*" -exec open {} +
它将在当前目录和所有子目录中查找以 navigation-drawer-config- 开头的文件并“打开”它们。
答案2
如果你使用的是 UNIX 或大多数类 Unix 操作系统(Linux、BSD、mac os),则可以使用xargs
它为不使用管道的行创建管道参数|
;因此对于你的例子
ls | grep navigation-drawer-config- | xargs open
以供参考,的第一个参数xargs
是(在示例中)open
,它将从其标准输入提供的结果grep
作为命令行参数,并执行“exec“open navigation-drawer-config”。