このワイルドカードが期待どおりに機能しないのはなぜですか?


11

私のユーザーフォルダには、私のようなフォルダ持つDの ropbox、Dの ocumentsを、D ownloads&D UMP。

ls a*名前がで始まるすべてのファイルをリストする必要がありaます。正しい?ただし、コマンドをls d*表示するdumpと、表示するだけでなく、lsのダンプディレクトリが表示されます。そして、コマンドをとしてls D*指定すると、Dで始まるすべての折り畳みのlsが表示されます

それで、私はそれを理解することでどの部分を逃しましたか?

編集:スクリーンショットを添付する lsスクリーンショット

回答:


17

bashのmanページによると:

bashは、文字*、?、および[の各単語をスキャンします。これらの文字のいずれかが表示される場合、単語はパターンと見なされ、パターンに一致するファイル名のアルファベット順にソートされたリストに置き換えられます

およびlsの情報ノードから

`ls 'プログラムは、ファイルに関する情報(ディレクトリを含むあらゆるタイプ)をリストします。オプションとファイル引数は、通常どおり任意に混在させることができます。

ディレクトリである非オプションのコマンドライン引数の場合、デフォルトでは「ls」はディレクトリの内容をリストし、再帰的ではなく、「。」で始まる名前のファイルを省略します。他の非オプション引数については、デフォルトで `ls 'はファイル名のみをリストします。非オプション引数が指定されていない場合、「ls」は現在のディレクトリの内容をリストします。

したがって、yo giveの場合ls d*d *はdで始まるすべてのファイル/ディレクトリ名のソートされたリストに展開されます。したがって、コマンドは

ls dump

また、ダンプはディレクトリ名であるため、「ダンプ」ディレクトリ内のすべてのファイルのリストを取得しますが、指定するとls D*D *は「デスクトップドキュメントダウンロードドロップボックス」に展開されるため、コマンドは

ls Desktop Documents Downloads Dropbox

これらはすべてディレクトリであるため、個々のディレクトリ内のファイルのリストを取得します。現在のディレクトリにDで始まるファイルがあった場合は、個別にリストされていました。


2
ちょっとした追加:引数として複数のディレクトリが指定されている場合、lsは、コンテンツをリストする前に各ディレクトリの名前を表示します。単一のディレクトリに対しては行いません。
マルセルスティムバーグ

ありがとう!それは私の疑問をクリアしました。私はやったls p*し、それが存在しているため、ファイルを示したls P*ショーの写真公開をで始まるファイルがないように、フォルダPが。そして、pooという名前のディレクトリを作成したとき、それは次の場所に現れましたls p*
Ashfame

7

ls d *とD *は、それぞれd *とD *に一致するファイルとフォルダーの両方をリストします。動作は同じです。テストに間違いがあったに違いありません。

フォルダーの内容ではなくフォルダー名のみをリストする場合は、「-d」を使用する必要があります。

ls -d D*

スクリーンショットを添付しました。ご覧ください
Ashfame

0

上記で提案したように、-dオプションは行く方法です。追加中

alias ld='ls -d'

私の~/.bashrcファイルにうまく機能します。


3
このエイリアスを使用するとld - The GNU linker、への簡単なアクセスをブロックするため、OPがプログラムをコンパイルおよびリンクできなくなります。alias lsd='ls -d'代わりに使用してください。何かをエイリアシングする前にfoo必ず行うtype fooかどうかを確認するためにfoo、エイリアスの利便性が前へのアクセスの損失をオーバーライドする場合は、すでに何かの名前として使用され、決定foo
waltinator
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.