3

fish 中的递归通配符非常有用。但是,如果我想将它用于带有前导点的文件或目录,则它不起作用。

例如:

folder
├subfolder
│ └test.txt 
├.subfolder
│ └test.txt
├test.txt
└.test.txt

如果我现在运行ls -a **.txt输出仅显示test.txt不在带前导点的文件夹中或本身不是点文件的文件。(输出subfolder/test.txt test.txt:)

我该如何解决?

4

2 回答 2

4

这是鱼问题 #1568

目前没有捷径可以做到这一点,很长的路是:

  • 使用外部程序(如查找)

或者

  • 像这样做一个更复杂的 glob:

    ls -a **.txt .*.txt **/.*.txt

它们按顺序匹配:非点文件、当前目录中的点文件、子目录中的点文件。

于 2015-07-17T23:42:53.650 回答
0

通配符被设计成一个简单的 API,不是为更复杂的搜索而​​设计的。

对于复杂的搜索,您可以使用findshell 命令。

find -name test.txt -print0 | xargs -0 ls -a

或者,如果您不关心文件名中的新行。

ls -a (find -name test.txt)
于 2014-07-19T20:29:56.357 回答