Bash - 比较2文件列表并显示差异

时间:2018-01-23 02:18:51

标签: bash

我想将filelist2filelist1进行比较。但不知怎的,我的代码无法正常工作,它总是将第一个文件显示为丢失的文件,请协助

例如,

filelist1

app-663.tar.bz2
deb-663.tar.bz2
misc-663.tar.bz2

filelist2

app-663.tar.bz2
deb-663.tar.bz2

这是我的代码

while IFS= read -r f; do
    if [[ -e $2/$f ]]; then
        printf '%s exists in %s\n' "$f" "$2"
    else
        printf '%s is missing in %s\n' "$f" "$2"
        exit 1
    fi
done < "$1"

输出

  

filelist2.txt

中缺少app-663.tar.bz2

1 个答案:

答案 0 :(得分:0)

awk是你的朋友:

awk 'NR==FNR{rec[$0];next}!($0 in rec)' filelist2 filelist1

<强>输出

misc-663.tar.bz2

所有好: - )

注意:如果您从awk开始,请查看此[book]