Findは同じパスを2回返しますが、切り捨てられます。

Findは同じパスを2回返しますが、切り捨てられます。

私は次のfindコマンドを実行しています:

find $HOME * -depth -type d -iname *bowtie* | grep "bowtie*-*1[^2]"

私の予想結果は次のとおりです。

/home/user/Documents/scripts/bowtie1.3.0-linux-x86_64
/home/user/Documents/scripts/bowtie-1.3.0-linux-x86_64

ただし、次を返します。

/home/user/Documents/scripts/bowtie1.3.0-linux-x86_64
/home/user/Documents/scripts/bowtie-1.3.0-linux-x86_64
Documents/scripts/bowtie1.3.0-linux-x86_64
Documents/scripts/bowtie-1.3.0-linux-x86_64

find最初の2つの結果のみを表示するようにコマンドを変更するにはどうすればよいですか?

ベストアンサー1

find複数の同じ検索パスを使用して実行されています。生成された名前$HOMEと一緒に使用しています。*明らかに、それは*あなたが探している名前を含むいくつかのディレクトリに展開されます。

提案:

find "$HOME" -type d -name 'bowtie*1.[!2]*'

上記の方法を使用すると、テストをより創造的に使用してgrep心の負担を軽減できます。-name呼び出す前に、現在のディレクトリに基づいて拡張してはいけないスキーマを参照する必要がありますfind

このパターンはで始まり、を含むbowtie名前1.nとそれ以外のn名前と一致します2。代わりに[!2][13-9]forceを使用して、すべての文字であるExcept Exceptでは2なく、整数Except Exceptを一致させることができます2

おすすめ記事