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


Answers:


40

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

find . -name '*abcd*'

12

Zsh:

ls -ld -- **/*abcd*

Ksh93:

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*

Yash:

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

tcsh:

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

鱼:

ls -ld -- **abcd*

(注意其中一些炮弹降目录树时,将遵循符号链接;有的那些不喜欢的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将在不带参数的情况下运行,而list也会运行.。对于某些xargs实现,您可以使用该-r选项来解决。


shopt -s globstar有什么作用?
capybaralet

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.