使用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}'
眼镜:
-I
是...的反面-P
...该手册提供了有关后者可以接受的更多信息:
https://linux.die.net/man/1/tree
-P pattern
仅列出与通配符模式匹配的文件。
注意:您必须使用该
-a
选项还必须考虑以点开头的那些文件,以.
进行匹配。有效的通配符运算符是
*
(任何零个或多个字符),?
(任何单个字符),[...]
(在括号之间列出的任何单个字符-
(用于字符范围的可选(破折号):ex:)[A-Z]
和[^...]
(未在括号中列出的任何单个字符) )并|
分隔备用模式。
没有提到shell的括号扩展语法{a,b}
...。此扩展由tree
而不是来处理bash
。
不幸的是,您不能指定-I
多次...
相反,您需要使用竖线(|
)列出完整模式以将它们分开:
tree -I '*.svg|*.png'
请注意使用单引号来防止外壳扩展星号(*
)或变量(由美元-引起$
)。
还要注意,甚至不可能强制外壳的支撑扩展,如下所示:
$ tree -I '*.'{svg,png}
+ tree -I '*.svg' '*.png'
*.png [error opening dir]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句