Bash - 将多个文件转换为一个,但具有不同的paterns

时间:2018-04-11 17:17:38

标签: bash shell

我有一个带有一些sql文件的文件夹,我想用sqlplus用脚本导入所有内容。在文件夹中,我这样做并且它可以工作,将所有文件转换为单个文件:

for filename in $(ls *.sql);
do
    cat $filename >> all.sql
done

但我的问题是,这些sql文件中有一些有" ADM"在标题上,我想把这些文件放到其他文件中,因为它们在DB上有不同的用户/传递。所以,我需要的是:

for filename in $(ls *ADM*.sql);
do
    cat $filename >> all_ADM.sql
done

for filename in --Rule that catch all files with ".sql" but without "ADM" in the title--
do
    cat $filename >> all.sql
done

我对正则表达式不太好,我已经尝试了很多我在互联网上找到的东西,但没有成功。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用grep -v排除与*ADM*.sql匹配的所有文件:

for filename in $(ls *.sql | grep -v "*ADM*.sql");