如何在所有子文件夹中搜索通配符名称?

如何在所有子文件夹中搜索通配符名称?

如何在所有子文件夹中搜索通配符名称?相当于 DOS 命令的是什么:dir *pattern* /s在 *nix 中?

答案1

您可以使用find。例如,如果您想查找abcd文件名中包含的所有文件和目录,您可以运行:

find . -name '*abcd*'

答案2

兹什:

ls -ld -- **/*abcd*

克什93:

set -o globstar     # put this line in your ~/.kshrc
ls -ld -- **/*abcd*

重击≥4:

shopt -s globstar   # put this line in your ~/.bashrc
ls -ld -- **/*abcd*

亚什:

set -o extendedglob # put this line in your ~/.yashrc
ls -ld -- **/*abcd*

tcsh:

set globstar
ls -ld -- **/*abcd*

鱼:

ls -ld -- **abcd*

(请注意,其中一些 shell 在目录树下降时将遵循符号链接;其中一些 shell 不喜欢zshyash必须这样tcsh***/*abcd*)。

可移植(除了非常旧的系统;OpenBSD花了很长时间但终于exec … +从 5.1 开始支持):

find . -name '*abcd*' -exec ls -ld {} +

不是 POSIX,但适用于 *BSD、Linux、Cygwin、BusyBox:

find . -name '*abcd*' -print0 | xargs -0 ls -ld

请注意,除了某些 BSD 之外,如果没有找到匹配的文件,ls -ld将不带参数运行,因此将列出..对于某些xargs实现,您可以使用该-r选项来解决这个问题。

相关内容