【发布时间】:2016-12-07 15:36:11
【问题描述】:
假设我有一个包含这些文件的 active/ 目录
active/
foo.bar.abc
foo.bar.xyz
foo.bat.abc
archive/
foo.bat.xyz
我想编写一个命令以仅输出 active/ 中的唯一文件名(基于中间项的唯一性)并且与 archive/ 中已有的任何文件都不匹配(再次基于该中间项)。
示例输出:
foo.bar.abc
解释:输出foo.bar.abc 或foo.bar.xyz 都没有关系。不是foo.bat.abc,因为foo.bat.xyz 存在于archive/ 中
我找到了this 来帮助识别基于模式的唯一值,但我不知道如何将它与存档中不匹配的附加子句结合起来/
【问题讨论】:
-
自己有什么尝试吗?
-
ls | awk -v re='foo\.[[:alpha:]]\.' 'match($0, re, a) && !(a[0] in p) {p[a[0]]; print}'之类的东西会打印出单个目录的唯一文件名。我不确定从哪里开始将其与另一个目录的内容进行比较。 -
@JitterbugChew:所有文件都是
word1.word2.word3类型的文件,你的要求是word2的唯一性吗? -
@Inian 是的。
word1是一致的,word2和word3不同