如何在所有子文件夹中搜索通配符名称?相当于 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 不喜欢zsh
或yash
必须这样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
选项来解决这个问题。