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]*$# "
}
我在 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]*$# "
}