私はfind
bashコマンドを使用していますが、私が使用しているコードの一部であるため、理解しようとしています。コード内の問題のコマンドは次のとおりです。
find -L $RAW_DIR -mindepth 2 -maxdepth 2 -name "*.bam" -o -name "*.sam" | wc -l
私はこのコマンドのコンポーネントを検索してこのコマンドを理解しようとしました。本質的に.bam
またはで終わるファイルの数を探しているようです.sam
。私は、-maxdepth 2
このフォルダとそのサブフォルダからこれらのファイルを検索することを意味すると思います。
私が理解していないのは、mindepth -2
この場合何が起こるのでしょうか。マインドディップを確認してみると、あちこちに説明が出ていますね——
」レベル(負以外の整数)より低いレベルでは、テストや操作を適用しないでください。 「-minlength 1」は、コマンドラインパラメータを除くすべてのファイルを処理することを意味します。」
説明は私には明確ではありません。maxdepth -2
深さ2のサブフォルダ検索を意味するように、単純なmindepth -2
言語では何を意味しますか?
.bam
また、最小深度が最大深度とは反対方向である場合(直感的に理解されている)、ファイルがあるフォルダで上記のコマンドを実行すると出力が発生することをどのように理解できますか?0, コマンドの minlength 部分を省略すると出力が発生します。1?
ベストアンサー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
maxdepth
否定的な主張を取ることは意味がありません。
$ find ./a -maxdepth -2
find: Expected a positive decimal integer argument to -maxdepth, but got ‘-2’