在shell脚本中构建find regex参数

时间:2015-04-25 22:49:54

标签: regex bash shell find

我正在尝试在shell脚本的find命令中构建regex表达式中使用的参数,但它似乎不起作用。

这个shell脚本的目标是能够根据shell脚本中的指定参数找到一些文件。

shell脚本类似于:

#!/bin/bash
IDS=$1
FOLDER="/tmp"
MODULENAMEPATTERN=`echo $IDS | sed "s/,/|/g"`
MODULENAMEPATTERN=".*\\.\\($MODULENAMEPATTERN\\)"
echo "find command: find $FOLDER -follow -type f -regex \"$MODULENAMEPATTERN.suffix\""

for FILEFOUND in `find $FOLDER -follow -type f -regex "$MODULENAMEPATTERN.suffix"`; do
    echo $FILEFOUND
done;

要启动它,我使用以下命令:

./test pattern1,pattern2

它会生成以下输出:

find command: /tmp -follow -type f -regex ".*\.\(pattern1\|pattern2\).suffix"

但仅此而已。

不幸的是,如果我从终端执行生成的find命令,它会生成以下输出:

/tmp/folder1/.pattern1.suffix
/tmp/folder2/.pattern1.suffix
/tmp/folder2/.pattern2.suffix

我确切知道我的问题究竟在哪里。你能救我吗?

此致

1 个答案:

答案 0 :(得分:0)

您必须在sed-expression中的管道符号前添加反斜杠。要引用反斜杠本身,您需要

t = (0:pts-1)/(pts-1);