我在bash
中遇到了一些问题。
我有N
个包含文件名的文件,我想找到所有文件中包含的文件名列表(文件的交集)。
当有2个文件时,我找到了这个解决方案:sort file1 file2 | uniq -d
,这实际上是在做我想要的。
但是如何将它推广到同一文件夹中的N
个文件?
File1
1
2
3
4
File2
1
4
File3
2
3
4
Output expected:
4
提前致谢, 最诚挚的问候。
答案 0 :(得分:3)
我不是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]*$# "
}