我对shell命令不太了解。但我想知道是否有办法列出所有只包含某个正则表达式部分的目录(没有文件)?
例如:
a/
/dir1
/d_332
file1.txt
/dir2
/d_123
file2.txt
/dir3
/dir4
/dir5
/d_444
file3.txt
我要使用的正则表达式是d_\d+
来查找以d_
开头并且有一系列数字的所有目录。这是Python正则表达式。我不确定与bash正则表达式相比有多么不同
这个命令会给我输出:
a/dir1/d_332/
a/dir2/d_123/
a/dir3/dir4/dir5/d_444/
答案 0 :(得分:2)
使用find
实用程序:
find path -type d -regex '.*/d_[0-9]+'
在您的情况下, path
将为a
;它是要搜索的目录树find
的顶部。
这使用两个过滤器:
-type d
过滤目录,-regex '.*/d_[0-9]+'
过滤与正则表达式.*/d_[0-9]+
匹配的路径(完整路径)。正则表达式应用于完整路径,因为find
打印它,而不仅仅是它的一部分;这就是为什么开始时.*
是必需的。目录树中与两个过滤器匹配的条目将被打印。
还有一个-regextype
选项,允许您使用几种不同风格的正则表达式,因此您可能需要查看联机帮助页。
答案 1 :(得分:1)
试试这个:
find . -type d -name 'd*[0-9]*'