读取文件并与文件名匹配

离开

我有一个试图读取的文本文件。可以说foo.txt包含:

foo.org
foo.com
foo.net
foo
bar.org
bar.com
bar
blah.org
example.org

而且我需要阅读此文件和grep,以便对文件名进行模式匹配(文件中不包含内容)

所有文件名将类似于:

foo.org.db foo.com.db bar.org.db

(由于它们是区域文件,因此它们的末尾都将带有.db)。

我一直在尝试类似的东西:

#!/bin/bash
FILE=foo.txt
DIR=/path/to/zone/files
MATCH=match.txt
NO_MATCH=nomatch.txt

read -r line; do
   for a in $DIR
   do  
       if [ line =~ $a ]
       then
          echo "$line" >> "$MATCH"
       else
          echo "$line" >> "$NO_MATCH"
   done
done< $FILE 

运行此脚本时,我看到创建了$ MATCH,但从未看到$ NO_MATCH。而且似乎条件条件没有奏效。我真的需要将所有不匹配的内容写入文本文件。因此,例如,如果exam​​ple.org写在$ FILE变量中,但文件名不匹配(没有example.org.db),则example.org应该写到$ NO_MATCH。我究竟做错了什么?

库萨兰达

不需要内部循环,并且while缺少:

while read -r name; do
    files=$( echo "$DIR/$name"* )
    if [[ "$files" != "$DIR/$name"* ]]; then
        echo "$name" >>"$MATCH"
    else
        echo "$name" >>"$NO_MATCH"
    fi
done <"$FILE"

echo "$DIR/$name"*将扩展为与给定模式匹配的所有文件名。如果没有匹配该模式的文件名,则该模式将保持未扩展状态。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从文件名读取日期

来自分类Dev

For循环读取文件名

来自分类Dev

文件名与fnmatch匹配

来自分类Dev

.htaccess URL重写并与现有文件名冲突

来自分类Dev

读取文件名部分未知的文件

来自分类Dev

读取所选文件的文件名

来自分类Dev

读取多个目录中的文件,使用Node和Promises将文件名与数据匹配

来自分类Dev

读取多个目录中的文件,使用Node和Promises将文件名与数据匹配

来自分类Dev

opendir无法读取完整的文件名

来自分类Dev

无法从文件名读取特殊字符

来自分类Dev

读取乱码文件名(FTP / FSO)

来自分类Dev

从文件名读取信息

来自分类Dev

输入文件名并读取文本

来自分类Dev

从目录中读取未知文件名

来自分类Dev

从powershell中的部分读取文件名

来自分类Dev

读取CSV,如果文本匹配,则打开具有匹配文件名的html文件,然后以文本形式复制

来自分类Dev

PHP:匹配相应的文件名

来自分类Dev

rm按模式匹配文件名

来自分类Dev

模式与R中的文件名匹配

来自分类Dev

zsh中 - 复杂的文件名匹配

来自分类Dev

显示grep匹配的文件名

来自分类Dev

grep匹配距离文件名太近

来自分类Dev

文件名格式匹配(PHP)

来自分类Dev

zgrep 列并打印匹配的文件名

来自分类Dev

打印匹配 awk 脚本的文件名

来自分类Dev

根据与单独文件内容匹配的当前文件名更改文件名

来自分类Dev

按文件名前缀顺序读取目录中的文件?

来自分类Dev

传递绝对文件名以在C ++中读取文件

来自分类Dev

如何读取目录中最后修改的文件的文件名?