No.3ベストアンサー
- 回答日時:
コマンドラインに入力したメタ文字は以下の順番で処理されます
1. シェルによるメタ文字の展開 (クォートされたら対象外)
2. シェルによるクォート文字の削除
3. シェルからプログラムへ引数を受け渡し
4. プログラム find によるメタ文字の処理
例)
$ find . -name \*.doc -print
1) find . -name \*.doc -print # クォートされているので対象外
2) find . -name *.doc -print
3) args = [".", "-name", "*.doc", "-print"]
4) find により "*.doc" のメタ文字を処理 → 目的どおり動作
例)
$ find . -name *.doc -print
1) find . -name abc.doc xyz.doc -print # パス名を展開
2) find . -name abc.doc xyz.doc -print
3) args = [".", "-name", "abc.doc", "xyz.doc", "-print"]
4) find に渡るメタ文字なし → 想定外の動作
参考) よくあるエラーのようで、説明書に記載がありました
https://linuxjm.osdn.jp/html/GNU_findutils/man1/ …
No.4
- 回答日時:
エスケープすれば, 当該文字はシェルから見て「特定の意味を持たない」文字になる. ただし find (など) にとって「ワイルドカード」になるかどうかは別の話.
あと「上の説明」でどのように「説明」してるのかしらんけど,
find . -name "*.doc" -print
がなんで NG だと思った?
マニュアル読んでる?
No.2
- 回答日時:
この手のコマンドはたいていシェル経由で実行されるので、シェルによるパス名展開(globbing)が先行することがあります。
その影響を防ぐためにエスケープします。
例)カレントフォルダに「a.doc」というディレクトリを作成して、以下を実行。
echo find . -name *.doc
echo find . -name \*.doc
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux ワイルドカードの使い方 4 2023/08/08 20:51
- UNIX・Linux ブレース展開の使い方での質問です 2 2023/07/15 16:06
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Visual Basic(VBA) vbaサブフォルダーをワイルドカードで取得したい 2 2022/11/15 08:04
- Excel(エクセル) Excelマクロの表示のExcel内をfindで検索 3 2022/06/15 20:07
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/04/17 13:07
- 法人税 電子帳簿保存法について 1 2022/04/07 11:17
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
鬼滅の刃「三部作」とはどうい...
-
進学校から大学には行かずに専...
-
スカしてるとはどういう意味で...
-
倍数(1.5倍、2倍)が分からな...
-
レポートの評価でAとA'の違いは?
-
molto ritの意味を教えてください
-
生きる意味とはなんですか
-
他方当事者 とは、どう言う意味...
-
右傾化と左傾化ってどういう意...
-
スカす の意味
-
「易ふる」ってなんて読みますか?
-
エクセルをスプレッドシートに...
-
マンゴーチャンクのチャンクっ...
-
「天地がひっくりかえってもあ...
-
旅の夜風
-
私のことですが、発達障害ある...
-
心手期せずしてとはどういう意...
-
よろずの意味はすべてのと言う...
-
U30/30歳以下の意味を教えてく...
-
VB6のAttribute VB_Nameの意味...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
倍数(1.5倍、2倍)が分からな...
-
ばみばみばみーん の意味を教え...
-
molto ritの意味を教えてください
-
スカしてるとはどういう意味で...
-
スカす の意味
-
オタク用語?の〇〇ムーブとは...
-
普通に可愛いというのは10点中...
-
旅の夜風
-
他方当事者 とは、どう言う意味...
-
「天地がひっくりかえってもあ...
-
レポートの評価でAとA'の違いは?
-
右傾化と左傾化ってどういう意...
-
心手期せずしてとはどういう意...
-
『サシ』ってなんですか?
-
パソコン詳しくなるコツはなん...
-
教育的な文章で使われる「弾力...
-
マンゴーチャンクのチャンクっ...
-
1、「それからというもの」はど...
-
よろずの意味はすべてのと言う...
-
VB6のAttribute VB_Nameの意味...
おすすめ情報
find . -name "*.doc" -print
でも上手くいくみたいですけど、
この場合はシェルによるパス名展開は先行しないのでしょうか?
エスケープすると、
シェルにとっての「通常文字」になり、
findにとっての「ワイルドカード」
になるってことですか?
No.2さんへの質問とも重なりますが、
上の説明だと、
find . -name '*.doc' -print
はOKのように思うのですが、
find . -name "*.doc" -print
は""内が展開されてNGになるように思うのですが、
何故上手くいくのでしょうか?