-nameまたは-regexを使用してディレクトリが見つからないのはなぜですか?

-nameまたは-regexを使用してディレクトリが見つからないのはなぜですか?

ディレクトリがあります~/Documents/machine_learning_coursera/

注文する

find . -type d -name '^machine'

何も見つかりません

私も試しました

find . -type d -regextype posix-extended -regex '^machine'

何も一致せず、文字列の先頭に一致します。

私も次のことを試しました-name

find . -type d -regextype posix-extended -regex -name '^machine'

エラーが発生しました。

find: paths must precede expression: `^machine'

私がここで何を間違っているのか?

ベストアンサー1

findは正規表現ではなく、-nameシェル/glob/ワイルドカードパターンを使用します。fnmatch()

GNUfind-regex非標準拡張は正規表現(デフォルトでは古いemacsタイプ)を使用しますが、ファイル-path名だけでなくフルパス(ワイルドカードも使用する標準など)に適用されます(暗黙的に固定されています)。

したがって、次の種類のファイルを見つけるには目次名前がで始まるmachine場合は、次のものが必要です。

find . -name 'machine*' -type d

または:

find . -regextype posix-extended -regex '.*/machine[^/]*' -type d

-regextype posix-extended(特定の正規表現の場合、基本的な正規表現エンジンも機能するため、必要はありません。)

ちなみに最初の試合では名前さらに、ファイルはロケールで有効なテキストでなければならず、2番目のファイルの場合はフルパスが有効なテキストでなければなりません。

おすすめ記事