ファイル名にアスタリスクが含まれているファイルを見つけるにはどうすればいいですか? 別の言い方をすれば、アスタリスクをワイルドカードとして動作させないようにするにはどうすればいいですか?
通常、ワイルドカードの場合は次のようになります。
$ find ./ -type f \( -iname \*.jpg \)
脱出できなかったら*
次のようになる
$ find ./ -type f \( -iname * \)
find: paths must precede expression: .....
find: possible unquoted pattern after predicate `-iname'?
エラーは*
引用符で囲む必要があることを示しているためfind ./ -type f \( -iname "*" \)
、またはを試しましたfind ./ -type f \( -iname '*' \)
が、これはワイルドカードとしても機能します。
答え1
正しい解決策は、角括弧を使用することのようです[ ]
。もちろん、投稿してから 5 分後に解決しました。これが将来誰かの役に立つことを願っています。
$ find . -name '*[*]*' -type f
*
バックスラッシュを使ってforをエスケープすることもできますが、find
$ find . -name '*\**' -type f
シングルクォートは、 を確認するために使用され、*
にも持つ特別な意味を失います。[
\
シェル。
答え2
注意してください。find(1) がエラーを言っているのはまったく別のことです。現在のディレクトリにファイルa
、b
、があるとしますc
。例えば、次のように呼び出します。
find ./ -type f \( -iname * \)
find
取得されるのは(./ -type f ( -iname a b c )
シェルは結果のコマンドラインを渡す前に '*' を展開し、括弧は引用符で囲まれます。 とまったく同じ結果になります***
)。次のように記述すると:
find ./ -type f \( -iname \* \)
それが取得します./ -type f ( -iname * )
、