将所有嵌套目录下的所有文件与shell匹配匹配
是否有使用shell Globbing来标识嵌套目录的方法?将所有嵌套目录下的所有文件与shell匹配匹配
因此,如果我有dir/dir1/dir2/dir3/dir4/dir5/..并且我拥有所有这些文件,那么匹配所有目录下的所有文件的等效匹配模式是什么,类似于 - 例如 - ls -R
在bash 4,具有shopt -s globstar
和zsh中你可以使用**/*
其中将包括隐藏文件除外的一切。您可以在zsh中使用Bash 4或setopt dotglob
中的shopt -s dotglob
来导致包含隐藏文件。
在ksh中,set -o globstar
启用它。我不认为有一种方法可以隐式包含点文件,但我认为**/{.[^.],}*
有效。
您可以使用树,它会递归地显示所有文件夹。
tree <path>
如果你想采取行动通过查找返回的所有文件,而不是只列出它们,你可以管他们xargs的:
find <directory> -type f | xargs ls
但这仅仅是针对那些不命令有一个递归标志。
关于git(gitignore,gitattributes和带文件名的命令)的具体说明:如果该模式不包含斜线,*
通配符将匹配较深。如果它包含斜线git will call fnmatch和FNM_PATHNAME
标志,并且简单通配符不匹配斜杠。 **
不匹配深度不支持。也许这种深度匹配可以通过新的FNM_STARSTAR
标志得到更广泛的支持,并且在glibc,gnulib和其他地方实现。
你可以试试:
**/*.*
但是它会忽略隐藏文件(如.git
文件)。有时候这是一种拯救生命的方式。
更多详情:What expands to all files in current directory recursively?在SO
投票搬到SuperUser.com。此外,为什么这个标签'混帐'? – meagar 2010-12-03 19:27:30
gitignore不使用shell globbing;这是一个单独的问题。 – Cascabel 2010-12-03 23:16:50
相似:[什么扩展到当前目录中的所有文件递归?](http://*.com/q/1690809/55075)在SO – kenorb 2015-04-18 22:53:22