0

シェルのファイル システムに関する問題が 1 つあります。tmp/**/*とはどう違いtmp/*ますか?私は自分のシステムで実験を行い、このディレクトリを dir2 にします

dir2
     -->dir1
         -->xx2
     -->ff.txt 

そして私は実行しますls dir2/*

dir2/ff.txt

 dir2/dir1:
 xx2

それから私は実行しますls dir2/**/*

dir2/dir1/xx2

したがって、**このディレクトリを無視することを意味します(dir1を無視するように)、誰かが私を助けることができますか?

4

1 に答える 1

0

出題テストの形式に問題があると思いますが、出題タイトルと例題をもとに回答します。

パスのどのレベルでも、単一のアスタリスクと二重のアスタリスクの間に違いがあってはなりません。いずれの式も、ドットで始まる非表示の名前を除いて、任意の名前に一致します (これはシェル オプションで変更できます)。そう:

  • tmp/**/*(と同等tmp/*/*) は、 で 2 レベル深くネストされているすべての名前に展開されtmpます。最初のアスタリスクの後にスラッシュが続くため、最初のレベルのファイルではなく、ディレクトリにのみ展開されます。
  • tmp/*は、 の 1 レベル深くネストされたすべてのものに展開されtmpます。

これにはls、コマンドラインでディレクトリが指定されている場合、ディレクトリの内容が一覧表示されるという事実があります。-dこれは、 にオプションを追加することでオーバーライドできますls

于 2012-05-21T09:05:51.893 に答える