質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

1回答

2808閲覧

findコマンドのワイルドカードの使い方

pyon_kiti_jp

総合スコア250

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

0クリップ

投稿2020/11/20 01:03

環境
Ubuntu16.4

下記コマンドの挙動があまりにも違いすぎるので教えて下さい。
"y"は、yで始まるファイルが1件存在するので、確かに、1件検索されます。
"y
"をすると、ディレクトリ配下にあるyが含まれるファイルが大量にずらずらと検索されてします。

$find ./ -name "y"* $find ./ -name "y*"

違いが余り分かっていないのですが、どなたか教えて下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

findコマンドの-nameオプションに指定するファイル名パターンは、「findが検索するディレクトリ上で探してほしいファイル名」を指定しますよね。

"y"*と指定すると、findを実行するさいにシェルがカレントディレクトリにある「yで始まるファイル名」に置換してからfindが実行されます。
たとえば、カレントディレクトリに「yes」というファイルがあれば、検索先のディレクトリから「yes」というファイル名を持つファイルを探すことになります。

補足: 運良く"y"*にマッチするファイルがカレントディレクトリに存在しなければ(*が展開されないため)結果は"y*"と同じになります。また、複数のファイルがマッチした場合は、findの引数に複数のファイル名が割り込むことになるので、文法エラーになるか思わぬ結果になるでしょう。

いっぽう、"y*"と指定すると、シェルによる置換は行なわれずに、「y*」がそのままfindに渡されてfindが実行されます。
すると、検索先のディレクトリから、「y*」にマッチするファイル名を持つファイルを探すことになります。

結論: findで-nameを使うときは、必ずクオートすること。

投稿2020/11/20 01:18

編集2020/11/20 01:26
Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pyon_kiti_jp

2020/11/20 01:49

ご丁寧な、ご回答ありがとうございます。 そのような違いがあるのですね。知りませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問