首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在这个命令中有什么选项“-极深”做什么?

在这个命令中有什么选项“-极深”做什么?
EN

Unix & Linux用户
提问于 2018-07-08 22:17:53
回答 2查看 11K关注 0票数 2

我正在使用bash的find命令,并且我试图理解它,因为它是我正在使用的代码的一部分。在代码中,有关命令是-

find -L $RAW_DIR -mindepth 2 -maxdepth 2 -name "*.bam" -o -name "*.sam" | wc -l

我一直试图通过搜索它的组件来理解这个命令。因此,我认为它是试图找到以.bam.sam结尾的文件数量。我认为-maxdepth 2意味着在这个文件夹及其直接子文件夹中搜索这些文件。

我不明白的是mindepth -2在这种情况下做了什么。我查了一遍,到处都是-

“不要在低于级别(非负整数)的级别上应用任何测试或操作。‘-min深度1’是指处理除命令行参数以外的所有文件。”

对我来说,这个解释不是很清楚。就像maxdepth -2意味着搜索深度为2的子文件夹一样,在简单的语言中,mindepth -2相应地意味着什么?

另外,如果min埋深在方向上正好相反(这是直观的),那么我如何理解这样一个事实:在具有.bam文件的文件夹上执行上面的命令会导致输出0,而忽略命令的最小深度部分会导致输出1

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-07-08 22:28:07

深度0是命令行参数,1是包含在其中的文件,2是包含在深度1中的文件,等等。

-mindepth N告诉只处理深度为>= N的文件,类似于-maxdepth M告诉只处理深度为<= M的文件。因此,如果要处理深度为2的文件,则需要同时使用这两种方式。

您的命令将与$RAW_DIR/foo/bam.bam匹配,但不匹配$RAW_DIR/bar.bam

试一试,例如。

代码语言:javascript
运行
复制
$ mkdir -p a/b/c/d
$ find ./a -maxdepth 2
./a
./a/b
./a/b/c
$ find ./a -mindepth 2
./a/b/c
./a/b/c/d
$ find ./a -maxdepth 2 -mindepth 2
./a/b/c

带有否定论点的maxdepth并不意味着什么:

代码语言:javascript
运行
复制
$ find ./a -maxdepth -2
find: Expected a positive decimal integer argument to -maxdepth, but got ‘-2’
票数 8
EN

Unix & Linux用户

发布于 2018-07-09 06:58:12

-mindepth 2-maxdepth 2参数一起将find的范围限制在$RAW_DIR的深度2处。

find命令与bash shell命令相同

代码语言:javascript
运行
复制
printf '%s\n' "$RAW_DIR"/*/*.{sam,bam} | wc -l

这将计算.sam子目录中$RAW_DIR.bam文件的数量。但是,对于没有文件的文件,它仍然会给出1的计数,但是就像find命令一样,它会将一个带有嵌入换行符的文件计数为两个文件。

对于绝对正确的find命令,将包含嵌入式换行符的文件名计算为一个文件:

代码语言:javascript
运行
复制
find . "$RAW_DIR" -type f -mindepth 2 -maxdepth 2 \
    '(' -name '*.bam' -o -name '*.sam' ')' -exec echo x ';' | wc -l

这将为每个匹配条件的找到的文件在一行上输出一个xwc -l将计算这些x-es。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/454197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档