Hag*_*ine 2 linux terminal bash tree
使用 tree 命令时,我想从输出中排除列表*.png
和*.svg
。问题是我尝试的每个括号扩展都不起作用。是因为树处理命令行参数的方式吗?
tree -I *.{svg,png}
tree -I '*.{svg,png}'
tree -I '{*.svg,*.png}'
tree -I '{*.svg,*.png}'
tree -I '*.{p,s}(v,n}g'
tree -I '*.{svg|png}'
Run Code Online (Sandbox Code Playgroud)
眼镜:
-I
是...的倒数-P
手册提供了有关后者可接受的内容的更多信息:
https://linux.die.net/man/1/tree
Run Code Online (Sandbox Code Playgroud)-P pattern
仅列出与通配符模式匹配的文件。
注意:您必须使用该
-a
选项同时考虑以点开头的那些文件.
进行匹配。有效的通配符是
*
(任何零个或多个字符)、?
(任何单个字符)、[...]
(括号内列出的任何单个字符(-
可以使用字符范围的可选(破折号):例如:)[A-Z]
和[^...]
(括号中未列出的任何单个字符) 并|
分隔交替模式。
没有提到 shell 的大括号扩展语法{a,b}
... 这个扩展是由 处理的tree
,而不是bash
。
不幸的是,您不能-I
多次指定...
相反,您需要使用管道 ( |
)列出完整模式以将它们分开:
tree -I '*.svg|*.png'
Run Code Online (Sandbox Code Playgroud)
请注意使用单引号来防止外壳扩展星号 ( *
) 或变量(由美元 - 引入$
)。
还要注意,甚至不可能强制 shell 的大括号扩展,如下所示:
$ tree -I '*.'{svg,png}
+ tree -I '*.svg' '*.png'
*.png [error opening dir]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2245 次 |
最近记录: |