目录中有所有的文件和符号链接:
./02.tdf/IP_B186.tdf
./02.tdf/In_B186.tdf
./03.bed/IP_B186_vs_In_B186_peaks.xls.promoter_peak.bed
./03.bed/IP_B186_vs_In_B186_peaks.xls.bed
./01.genome/Harukei3_v1.41.fa
./01.genome/Harukei3_v1.41.gene.bed
./md5.txt
当我运行find . -type f -o -type l -exec md5sum {} + | sort > md5.txt
时,我会得到:
cat md5.txt
331a1bebdaf8b09fbdb6468b9c53bac3 ./01.genome/Harukei3_v1.41.fa
6354c1dfb5b0aff9620712ec17c271e3 ./01.genome/Harukei3_v1.41.gene.bed
当我运行find . -type f -o -type l | while read i; do md5sum $i >> md5.txt; done
时,我会得到:
cat md5.txt
d9eb8d2ad4f0c03ca1dc9628e3562f01 ./02.tdf/IP_B186.tdf
c72eda337f2d75301baf125d6d64a5bc ./02.tdf/In_B186.tdf
3ea65045235ed51efcc88af49d126a60 ./03.bed/IP_B186_vs_In_B186_peaks.xls.promoter_peak.bed
954484488dce3f5f18b7c06f6693f223 ./03.bed/IP_B186_vs_In_B186_peaks.xls.bed
331a1bebdaf8b09fbdb6468b9c53bac3 ./01.genome/Harukei3_v1.41.fa
6354c1dfb5b0aff9620712ec17c271e3 ./01.genome/Harukei3_v1.41.gene.bed
第二个结果是我想要的,我想知道为什么第一个脚本给出了一个如此斯特朗的输出。有人能帮帮我吗?非常感谢。
我也尝试了find . -type f -o -type l -exec md5sum {} \; | sort > md5.txt
,但它给出了我不想要的相同输出。
1条答案
按热度按时间42fyovps1#
find
状态的标准(格式化我的):可以使用以下运算符(按优先级降序排列)组合主元素:
(
表达式)
!
表达式-a
]表达式-a
运算符来明确。如果第一个表达式为假,则不应计算第二个表达式。-o
表达式如果不存在表达式,则
-print
应用作表达式。否则,如果给定表达式不包含任何原色-exec
、-ok
或-print
,则给定表达式应有效地替换为:(
given_expression)
-print
find . -type f -o -type l -exec md5sum {} +
它的形式为 expression
-o
expression,表达式为:-type f
-type l -exec md5sum {} +
-a
expression)只有第二个产生输出。
find . -type f -o -type l
它也有 expression
-o
expression 的形式,表达式为:-type f
-type l
这两个表达式都不显式地产生输出。然而,上面的最后一条规则适用,隐含的命令是:
正如@jqurious在评论中指出的那样,为了得到你想要的结果,你应该使用括号: