ディレクトリがあります~/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番目のファイルの場合はフルパスが有効なテキストでなければなりません。