我有一个脚本,我想在文件夹中找到纯数字的所有直接子目录,并将它们复制到指定的目标。我有问题要让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]*"
但似乎+
不起作用,*
似乎是通配符。
答案 0 :(得分:8)
使用-regex
代替-name
,例如
find . -maxdepth 1 -type d -regex ".*/[0-9]*"