linux找到正则表达式

时间:2011-12-02 09:36:09

标签: linux bash find

我有一个脚本,我想在文件夹中找到纯数字的所有直接子目录,并将它们复制到指定的目标。我有问题要让regexp与+中的*find一起使用。示例中的文件夹结构如下:

0/
1/
2/
3/
3.02asd/
3a/
4/
44/
45/
451/
452/
453/
4531/
4532/
45321/
45322/
45323/
666aa/
66a/
66aaa/
temp27/

我已经使用以下命令:

find . -type d -maxdepth 1 -name "[0-9]" | while read f
do
    mv $f $TESTPATH
done

find . -type d -maxdepth 1 -name "[0-9][0-9]" | while read f
do
    mv $f $TESTPATH
done

find . -type d -maxdepth 1 -name "[0-9][0-9][0-9]" | while read f
do
    mv $f $TESTPATH
done

find . -type d -maxdepth 1 -name "[0-9][0-9][0-9][0-9]" | while read f
do
    mv $f $TESTPATH
done

find . -type d -maxdepth 1 -name "[0-9][0-9][0-9][0-9][0-9]" | while read f
do
    mv $f $TESTPATH
done

不是很好,但它确实有效,但这应该是可能的,例如:

find . -type d -maxdepth 1 -name "[0-9]+"

find . -type d -maxdepth 1 -name "[0-9][0-9]*"

但似乎+不起作用,*似乎是通配符。

1 个答案:

答案 0 :(得分:8)

使用-regex代替-name,例如

find . -maxdepth 1 -type d -regex ".*/[0-9]*"