我正在使用findbash的命令,我试图理解它,因为它是我正在使用的代码的一部分。在代码中,有问题的命令是 -
find -L $RAW_DIR -mindepth 2 -maxdepth 2 -name "*.bam" -o -name "*.sam" | wc -l
我一直试图通过搜索它的组件来理解这个命令。本质上,我认为它试图找到以.bamor结尾的文件数.sam。我认为-maxdepth 2意味着在此文件夹及其直接子文件夹中搜索这些文件。
我不明白的是mindepth -2在这种情况下是什么。我查了mindepth,到处给出的解释是——
“不要在低于级别(非负整数)的级别应用任何测试或操作。'-mindepth 1' 表示处理除命令行参数之外的所有文件。 “
对我来说,这个解释不是很清楚。就像maxdepth -2意味着搜索深度为 2 的子文件夹一样mindepth -2,用简单的语言来说,相应的意思是什么?
此外,如果 mindepth 在方向上与 maxdepth 正好相反(这将具有直观意义),那么我如何理解在确实有.bam文件的文件夹上执行上述命令会导致输出 0的事实,而省略命令的 mindepth 部分会导致输出1 ?
深度 0 是命令行参数,1 是其中包含的文件,2 是深度 1 中包含的文件,等等。
-mindepth N告诉仅处理深度 >= N 的文件,类似于-maxdepth M告诉仅处理深度 <= M 的文件的方式。因此,如果您想要深度为 2 的文件,确切地说,您需要同时使用两者。
您的命令会匹配$RAW_DIR/foo/bam.bam,但不会匹配$RAW_DIR/bar.bam。
尝试,例如
$ 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
Run Code Online (Sandbox Code Playgroud)
maxdepth 带有否定的论点并不意味着什么:
$ find ./a -maxdepth -2
find: Expected a positive decimal integer argument to -maxdepth, but got ‘-2’
Run Code Online (Sandbox Code Playgroud)