需要shell脚本来比较文件

时间:2017-02-07 04:53:36

标签: shell unix

我想一次选择一行文件(file1.txt)并与另一个文件的所有行(file2.txt)进行比较,并检查该行是否有任何条目。

我有两个文件(file1.txt和file2.txt)
还有文件中显示的文件名,这些文件也出现在gdir / db / files目录中。

file1.txt

/db/day_files/data_feed20161231
/db/day_files/data_feed20161229
/db/day_files/data_feed20161125
/db/day_files/data_feed20161118

file2.txt
data_feed20161229
data_feed20161125

要求1:首先我们要检查file1.txt和file2.txt文件是否出现在目录gdir / db / files中。 如果不存在任何文件,则只显示消息file1.txt不存在 (或)file2.txt不存在(或)file1.txt和file2.txt不存在。

Req2:从file1.txt读取文件名(一次一行) 并将它与循环中file2.txt文件中存在的所有名称(所有行)进行比较。 并且该循环将一次检查一个文件名。

一个。如果文件名匹配,则将该文件移动到路径gdir / old / files并将值10返回给变量,并且如果存在更多文件名则将继续运行。 湾如果文件名在列表中不匹配,则返回值20并继续其他。

请帮帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

while read line; do
    if grep -Fxq "$line" file-where-search.txt
    then
        # code if found
    else
        # code if not found
    fi
done <file-source.txt

要添加文件名的路径,请使用字符串:

"/path/to/file/$line"

删除路径并仅使用文件名

filename=`basename "/path/to/file/filename.ext"`