名前 - パスを検索

名前 - パスを検索

私には木があります。

.
├── 1
│   └── a
│       └── script.a.sh
├── 2
│   └── a
│       └── script.b.sh
...
└── a
    └── script.sh

私は見つけるべきですscript.*.sh。私は以下を実行します./a/script.sh

#!/bin/bash
#

path="/tmp/test"

readarray files < <(find ${path} -path  "*/a/script.*.sh")

if [ ${#files[@]} -ne 0 ]
then
  for file in "${files[@]}"
  do
    echo ${file}
  done
fi

出力:

/tmp/test/1/a/script.a.sh
/tmp/test/2/a/script.b.sh

これは有効なスクリプトです!

find ${path} -path "*/a" -name "script.*.sh"ただし、findコマンドをスクリプトに変更すると、何も出力されません。

私のロジックは/tmp/test/*/a/script.*.sh私が言うパターンを持つすべてのファイルを探しますfind ${path} -path "*/a" -name "script.*.sh"

現在残っている質問は次のとおりです。

  1. find ${path} -path "*/a" -name "script.*.sh"コマンドは実際に何をしますか?
  2. にデバッグモードがありますかfind?私の言葉は、私が何を言っているのかを理解する方法を意味します(例:検索するパス、no find . -name "*te.st*"、just ./*/*te.st*)。
  3. -name、同じコマンドライン(必要なケース、はい、説明)にありますか-path?それとも相互排他的ですか?それとも-path拡張バージョンと言えますか-name

manはい、はい、およびを使用できますgoogle。また、これらのソースからすべての質問に対する完全な答えが見つかりませんでした。

ベストアンサー1

-pathGNUバージョンの引数は、find開始ディレクトリを含むアクセスされるオブジェクトのフルパスに適用されるパターンを指定します。

パターンはパターンですが、スラッシュは特に扱われません。たとえば、パスとパターンのa/b/c/d一致ですa*d

これはシェルステートメントのパターンcaseマッチングと似ています。

$ case a/b/c/d in a*d ) echo match;; esac
match

パス名拡張でパターンマッチングの代わりに。

$ echo a*d # will not match an a/b/c/d file accessible in this directory!

たとえば、次のようになります。

find /etc -path '*.conf'

一致して印刷されます/etc/foobar/foobar.conf。パスに出会うと、パスはパターンと一致します。

したがって:

  1. 質問:find ${path} -path "*/a" -name "script.*.sh"何をしますか?

    答え:何も見つかりません。-pathで終わるパスと一致するため、/aで終わるscript.*.shディレクトリエントリを一致させることはできませんa-pathand述語は-name暗黙の論理ANDにリンクされているため、結果は空です。

  2. 開始位置はオプションです。省略findできます。シェル構文(引用符なしの引数として使用される場合)は、ファイル名拡張子を使用してシェルによって拡張されます。または、一致するものがない場合は、そのままにしておくこともできます。find -name '*.txt'find . -name '*.txt'./*/*te.st*find

  3. -pathQ:ライブと-name同じコマンドラインにありますか?

    答え:もちろん可能です。ただし、「and」と組み合わせて競合が発生すると、結果が空になる可能性があります。 find -path X -name Y意味find -path X -a -name Y -a -print: アクセスしたパスが一致しないX場合そしてアクセスされているディレクトリエントリが一致すると、Yパスが印刷されます。X一致する名前で終わるY一致するパスがないと、-print述語(暗黙的または明示的)に到達できません。何も印刷できません。

おすすめ記事