次の簡単な構造があります。
project
main
aaa
aaa
test
ddd
ddd
pom.xml <--- unique regular file
現在のディレクトリproject
が実行されると、ls
コマンドが表示されます。
main pom.xml test
ここはすべてが正常です。これで、次のman ls
オプションがd
存在します。
-d, --directory
list directories themselves, not their contents
そのためls -d
、実行時に次のコマンドが表示されます。
.
なぜ?正直なところ、私は通常のファイルではなくディレクトリだけを期待していました。例えば
main test
質問
d
このコマンドのオプションは正確にどのようにls
機能しますか?
その他の質問:
- 何ですか彼らの内容ではなくそれはまさにどういう意味ですか?各ディレクトリの内部内容についてですか?
答え1
通常、ディレクトリを入力すると、そのls
ディレクトリの内容が表示されます。
たとえば、あなたの例では次のようになります。
$ ls project
main test
$ ls project/main
aaa aab
$ ls project/test
dda ddb
このフラグを使用すると、ディレクトリ-d
自体が一覧表示されます。
$ ls -d project
project
ワイルドカードのようなものを見るまでは退屈に聞こえます。
$ ls project/*
project/main:
aaa aab
project/test:
dda ddb
すべてのディレクトリが一致することを確認し、そのディレクトリにあるファイルのリストを取得できます。
ただし、-d
ディレクトリ名自体しか取得できず、ディレクトリ内のファイルは取得できません。
$ ls -d project/*
project/main project/test
答え2
lsコマンドのdオプションは正確にどのように機能しますか?
ls -d
もはやディレクトリを探していません。ls
引数を使用しないことは同じなので、出力のみがls .
表示されます。.
使用方法の例は次のとおりです。
$ mkdir -p {foo,bar,baz}/dir
$ ls *
bar:
dir
baz:
dir
foo:
dir
$ ls -d *
bar baz foo
いくつかのディレクトリメタデータを見るにはls -ld
:
答え3
あなたは非常にさまざまな問題。しかし、混乱に対する短い答えは次のとおりです。ディスカッションfor ls
(指定されていない場合)は .
。ls
オプションなしで実行すると、次の結果が表示されます。コンテンツ.
。 走れば得るls -d
ことができる.
。