勉強しなくてもいつもこんな悩みがあります。
別のディレクトリから始点のファイルを検索するときに始点のフルパスを指定しましたが、機能しませんでした。開始ディレクトリにあり、開始点へのフルパスを提供しても同じことが起こります。
find /path/from/start/. -path './anaconda3/*' -prune -o -name '*R' -print
お菓子が入っているかのように、「Trim」ディレクトリに直接移動します。
私が出発点にいる場合は、最初から始めることをお勧めし.
ます。そうでなければ、find
私が逃げようとしているパスは切り捨てられません。
find . -path './anaconda3/*' -prune -o -name '*R' -print
働く
たぶん詳細な回答でこの問題を解決できます。時には学ぶことになりますが、次に命令を受けたら、以前find
に一度もやったことがなかったのと同じ問題に直面します。マニュアルページのこの章は-path pattern
何かを言おうとしますが、それはvogonにあるようで、バーベルフィッシュはありません。
答え1
-path
生成されたフルパス名と一致しますfind
。で始まる場合、パス名はこれで始まります。 (必要ではなく複雑です).
で始まると、パス名がで始まります。/path/from/start
/.
/path/from/start
したがって、パス全体を一致させる必要があります。
find /path/from/start -path '/path/from/start/anaconda3/*' -prune -o -name '*R' -print
この部分はそれ自体がトリミングされるため、最後の部分/path/from/start/anaconda3
も必要ありません。/*
find /path/from/start -path /path/from/start/anaconda3 -prune -o -name '*R' -print
-path
デフォルトでは、開始パスが「標準」パスで繰り返されることに注意してください。
find /path/from/start -path /path/from/start/anaconda3 -prune -o -name '*R' -print
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
find . -path './anaconda3/*' -prune -o -name '*R' -print
^ ^
これが削除したい唯一のディレクトリ、またはanaconda3
すべてのディレクトリを削除したい場合は、anaconda3
次のものを使用できます-name
。
find /path/from/start -name anaconda3 -prune -o -name '*R' -print
これは、複数の開始パスを指定する場合にも適用されます。各-path
式は、すべての開始パスで生成されたフルパス名と一致します。したがって、次のことができます。
find /path/from/start /otherpath/from/elsewhere \
-path /path/from/start/anaconda3 -prune -o \
-path /otherpath/from/elsewhere/anaconda3 -prune -o \
-name '*R' -print