fish 中的递归通配符非常有用。但是,如果我想将它用于带有前导点的文件或目录,则它不起作用。
例如:
folder
├subfolder
│ └test.txt
├.subfolder
│ └test.txt
├test.txt
└.test.txt
如果我现在运行ls -a **.txt
输出仅显示test.txt
不在带前导点的文件夹中或本身不是点文件的文件。(输出subfolder/test.txt test.txt
:)
我该如何解决?
这是鱼问题 #1568。
目前没有捷径可以做到这一点,很长的路是:
或者
像这样做一个更复杂的 glob:
ls -a **.txt .*.txt **/.*.txt
它们按顺序匹配:非点文件、当前目录中的点文件、子目录中的点文件。
通配符被设计成一个简单的 API,不是为更复杂的搜索而设计的。
对于复杂的搜索,您可以使用find
shell 命令。
find -name test.txt -print0 | xargs -0 ls -a
或者,如果您不关心文件名中的新行。
ls -a (find -name test.txt)