我正在尝试查找名称中的所有目录,这些目录在以某个字符串开头的目录中为五位数,在此示例中为:test
。目录结构如下:
|-1
|---12324
|-otherFile
|---23424
|-someFile
|---22343
|-test
|---22343
|---23424
|-testTemp
|---23454
|---adsf
|-testTemp1
|---34566
|-testTemp2
|---34543
我想仅在以test开头的文件夹中获取5位数名称,忽略目录1
,otherFile
和someFile
。
我正在尝试这样的事情:
find ./test* d -name "\d+" print
给出错误
find: print: unknown primary or operator
或
grep -r "./test*/\d{5}"
给出错误
grep: warning: recursive search of stdin
这些错误意味着什么?我怎样才能进行此搜索?如果文件所在的目录也被打印出来也会很好。我在Mac终端。
答案 0 :(得分:1)
您可以在-regex
中尝试find
optin:
find ./test -regextype posix-egrep -type d -regex '.*/[0-9]{5}$'
在OSX上使用:
find -E ./test -type d -regex '.*/[0-9]{5}$'
或没有正则表达式:
find ./test -type d -name '[0-9][0-9][0-9][0-9][0-9]'
答案 1 :(得分:-1)
您可以使用类似的东西(应该存在更简单的版本):
find . -type d -name "test*" | xargs -I % sh -c 'find % -type d -regextype sed -regex ".*[0-9]\{5\}"'
首先,查找带有find
find . -type d -name "test*"
然后,从第一个查找结果,使用xargs
使用正则表达式sed查找5位数文件夹:
find % -type d -regextype sed -regex ".*[0-9]\{5\}"
这意味着,我希望.*
以5位数字结尾[0-9]\{5\}
。