我的last question已展开,所以让我们分别分析一下。
AND-operater,Intersection?
我举一个例子:
$ find . | awk -F"/" '{ print $2 }'
.zcompdump
.zshrc
.zshrc_copy
.zshrc_somequy
.bashrc
.emacs
$ find ~/bin/FilesDvorak/.* -maxdepth 0 | awk -F"/" '{ print $6 }'
.bashrc
.emacs
.gdbinit
.git
.profile
当我将输出保存到单独的列表时,我无法理解为什么命令不采用常见的东西:
find -f all_files -and -f right_files .
我只想:
.bashrc
.emacs
答案 0 :(得分:1)
- 仅适用于测试。如果你想找到两个列表的共同元素,你应该做类似
的事情sort all_files > all_files.sorted
sort right_files > right_files.sorted
comm -12 all_files right_files > common_files
答案 1 :(得分:1)
略微扩展戴夫的回答:
您似乎想要两个查找命令的交集。查找不做集合操作。查找遍历(或向上取决于您如何看待它)一组路径并将表达式应用于它遇到的每个项目。它所采取的默认操作是打印它找到的项目的路径,该路径根据表达式求值为true。 (我相信一些旧版本的find需要您明确添加-print表达式。)它不会整理结果。对于交叉点分析,您可以使用 diff,sdiff,comm 等工具。
我假设你试图在两个单独的目录中找到具有相同名称的项目,而不是在子目录中。
假设bash你可以做类似
的事情comm -12 <(find . -maxdepth 1 | sort) <(cd ~/bin/FilesDvorak/; find . -maxdepth 1 | sort)
我相信-and in find命令几乎总是多余的。实施例
find . -type f ! -type d
与
相同find . -type f -and ! -type d
-f标志也是一个添加到遍历路径的选项。我不相信这是一种表达。请'找到'澄清。
答案 2 :(得分:0)
男人的选择
-and运算符是逻辑AND 运营商。原样 由两个表达式并列所暗示 不 不必指定。表达式评估 至 如果两个表达式都为真,则为true第二 表达 如果第一个表达式为false,则不进行评估。
本手册的这一部分对我来说相当神秘。但是,让我们分析一下。
第一句:和Math中的AND运算符一样。只有两个1只
2nd sentente:这表明你不需要使用命令,正如你在Dave的回答中看到的那样。大! - - 似乎将第一个表达式与-AND并置于没有-AND的表达式中。 请向我澄清这个希腊语。
第3句:重复:第1句中用“逻辑”一词表示相同。
第4句:重复:它表示01表示错误
同样的英文:
令p和q为具有以下真值的两个表达式
p q pANDq
1 1 1
1 0 0
0 1 0
0 0 0
其中1表示true,而0表示错误。
请注意,手册通常包含多余的描述,有时甚至是错误。