Regex Bash脚本——正则表达式。regmatch.unix
我正在尝试编写一个bash脚本(unix),它可以比较一个文件夹中的文件,将它们与另一个文件夹中的文件进行匹配,并检测是否存在匹配 文件夹中的文件都有一个共同的名称结构,如:Regex Bash脚本——正则表达式。regmatch.unix,regex,bash,Regex,Bash,我正在尝试编写一个bash脚本(unix),它可以比较一个文件夹中的文件,将它们与另一个文件夹中的文件进行匹配,并检测是否存在匹配 文件夹中的文件都有一个共同的名称结构,如: *****-dbtableName-*****-YYYY-MM-DD.sql 我尝试将[[a-zA-Z]+\DB[a-Z]+\-[a-zA-Z0-9-\+\.[sql]作为正则表达式。它不起作用 我将非常感谢您的帮助。您尝试过diff吗 diff-q directory1 directory2将报告两个目录中不存在的
*****-dbtableName-*****-YYYY-MM-DD.sql
我尝试将[[a-zA-Z]+\DB[a-Z]+\-[a-zA-Z0-9-\+\.[sql]
作为正则表达式。它不起作用
我将非常感谢您的帮助。您尝试过diff吗
diff-q directory1 directory2
将报告两个目录中不存在的文件或它们是否相同。如果要进一步筛选,您可以始终通过grep传递结果,或者使用-x
选项从diff中排除特定的文件类型。有关在您的计算机上安装版本。您是否尝试过不同的版本
diff-q directory1 directory2
将报告两个目录中不存在的文件或它们是否相同。如果要进一步筛选,您可以始终通过grep传递结果,或者使用-x
选项从diff中排除特定的文件类型。有关计算机上的版本。假设名称为:barbar-fooDB-bazbaz-2011-06-19。sql匹配可以这样分析:
[a-zA-Z]\+-[a-zA-Z]\+DB-[a-zA-Z]\+-[0-9]\+-[0-9]\+-[0-9]\+\.sql
使用例如grep
$ echo "barbar-fooDB-bazbaz-2011-06-19.sql" | grep "[a-zA-Z]\+-[a-zA-Z]\+DB-[a-zA-Z]\+-[0-9]\+-[0-9]\+-[0-9]\+\.sql"
barbar-fooDB-bazbaz-2011-06-19.sql # matched
你可以这样优化它
[a-zA-Z-]\+DB-[a-zA-Z0-9-]\+\.sql
虽然没有那么严格,但仍然匹配正确的文件名
$ echo "barbar-fooDB-bazbaz-2011-06-19.sql" | grep "[a-zA-Z-]\+DB-[a-zA-Z0-9-]\+\.sql"
barbar-fooDB-bazbaz-2011-06-19.sql # matched
或者如果你喜欢这个例子
$ touch /tmp/barbar-fooDB-bazbaz-2011-06-19.sql
$ ls -1 /tmp/ | grep "[a-zA-Z-]\+DB-[a-zA-Z0-9-]\+\.sql"
这对于处理正则表达式都很好,但对于您的问题,最好采纳Dan的建议,并使用
diff
将其与通配符(如*.sql
或任何适合您需要的通配符)相结合。假设名称为:barbar-fooDB-baz-2011-06-19.sql可以这样分析匹配:
[a-zA-Z]\+-[a-zA-Z]\+DB-[a-zA-Z]\+-[0-9]\+-[0-9]\+-[0-9]\+\.sql
使用例如grep
$ echo "barbar-fooDB-bazbaz-2011-06-19.sql" | grep "[a-zA-Z]\+-[a-zA-Z]\+DB-[a-zA-Z]\+-[0-9]\+-[0-9]\+-[0-9]\+\.sql"
barbar-fooDB-bazbaz-2011-06-19.sql # matched
你可以这样优化它
[a-zA-Z-]\+DB-[a-zA-Z0-9-]\+\.sql
虽然没有那么严格,但仍然匹配正确的文件名
$ echo "barbar-fooDB-bazbaz-2011-06-19.sql" | grep "[a-zA-Z-]\+DB-[a-zA-Z0-9-]\+\.sql"
barbar-fooDB-bazbaz-2011-06-19.sql # matched
或者如果你喜欢这个例子
$ touch /tmp/barbar-fooDB-bazbaz-2011-06-19.sql
$ ls -1 /tmp/ | grep "[a-zA-Z-]\+DB-[a-zA-Z0-9-]\+\.sql"
这对于处理正则表达式是很好的,但是对于你的问题,最好采纳Dan的建议,并使用
diff
将其与通配符(如*.sql
或任何适合你需要的通配符)相结合。文件名中真的有'*'字符吗?祝你好运。@Sheller基于他提供的正则表达式,似乎*
意味着ns文件名示例中的任何内容(即文件名本身是正则表达式!:P)文件名中是否真的有'*'字符?祝您好运。@Sheller根据他提供的正则表达式,似乎*
表示该文件名示例中的任何内容(即文件名本身是正则表达式!:P)