N个文件的交集

Intersection of N files

我在 bash 中遇到了一个小问题。

我有 N 个包含文件名的文件,我想找到包含在所有文件中的文件名列表(文件的交集)。

当有 2 个文件时,我找到了这个解决方案:sort file1 file2 | uniq -d,这实际上是我想要的。

但是如何将其概括为同一文件夹中的 N 个文件?


File1

    1 
    2 
    3 
    4

File2

    1 
    4

File3

    2 
    3 
    4

Output expected:

    4

提前致谢, 最好的问候。

我不是 Marc B,但仍然是他的想法的实现:

intersect() {
    sort "$@" | uniq -cd | grep "^[^0-9]*$# "
}

# usage example
intersect file1 file2 file3

[编辑:]为了克服同一文件中重复行的问题,我会这样做:

intersect() {
    for file in "$@"; do
        sort -u "$file"
    done | sort | uniq -cd | grep "^[^0-9]*$# "
}