如何基于通配符匹配递归查找当前和子文件夹中的所有文件?
当前回答
你也可以使用ripgrep。
例子:
搜索所有包含子字符串psql的文件名,
rg --files | rg psql
其他回答
使用查找:
find . -name "foo*"
find需要一个起点,所以。(点)指向当前目录。
这将搜索当前目录和子目录中的所有相关文件,分别计算它们的行数以及总数:
find . -name "*.wanted" | xargs wc -l
对于Python>3.5,使用glob。指向当前文件夹并查找.txt文件:
python -c "import glob;[print(x) for x in glob.glob('./**/*txt', recursive=True)]"
对于较旧版本的Python,可以安装glob2
如果已安装,请尝试使用fd命令。安装说明。
查找以“name”开头的所有文件:
fd "name*"
此命令忽略所有.hhidden和.gitignoreed文件。
要包含.gitignoreed文件,请添加-I选项,如下所示:
fd -I "name*"
要包含隐藏文件,请添加-H选项,如下所示:
fd -H "name*"
find -L . -name "foo*"
在少数情况下,我需要-L参数来处理符号目录链接。默认情况下,忽略符号链接。在这些情况下,这非常令人困惑,因为我会将目录更改为子目录,并看到与模式匹配的文件,但find不会返回文件名。使用-L解决了这个问题。查找的符号链接选项为-P-L-H