わかりました、この質問はUnix/Linuxシェルを対象としています!すべてのファイルに一致するシェルグロブ別名wildchard-)式が必要です---(含む現在のディレクトリ内の隠しファイルを非再帰的に(maxdepth == 1)。これまでのところ、2つのコマンドを実行するか、長い回避策を使用する必要があります(以下を参照)。
ls -lad *vim*
ls -lad .*vim*
zshの使用中。しかし、ダッシュとバッシュについても同じことを覚えていれば、そうでしょう?
短い回避策:
ls -la | grep vim
find . -maxdepth 1 | grep vim
しかし、私は百回疑問に思いました、これに対する単純なグロブの解決策はありません、そしてなぜ*
ドット文字と一致しませんか?
*
does.
文字と一致します。名前の最初の文字である場合、単に.
と一致しません。これは、ファイルを「隠す」ためのいわゆる「ドットファイル」メカニズムを提供します。
zsh
:GLOB_DOTS
シェルオプションを設定します。これは、zsh
ユーザーマニュアルの§14.8にあります。このオプションがオンになっている場合でも、.
および..
は常に除外されることに注意してください。
bash
:dotglob
シェルオプションを設定します。これは、bash
ユーザーマニュアルの§3.5.8にあります。 GLOBIGNORE
Shell変数を設定すると、暗黙的にdotglob
が設定されることに注意してください。 bash
が有効になっている場合、zsh
(dotglob
とは異なり)は.
と..
を自動的に除外しません。しかし、そのbash
willGLOBIGNORE
が設定されている場合にそれを行います。したがって、GLOBIGNORE=.
を設定すると、.
と..
を除いてdotglob
およびがオンになります。
find
:何もしないでください。 findutils
4.2.2の時点で、-name
と-iname
alreadyのグロブは、最初の文字がドットの名前と一致します。これは、findutils
ユーザーマニュアルの§2.1.1にあります。
オプションを変更したくない場合は、次のいずれかを実行します。
ls -ld {,.}*vim*
ls -ld *vim* .*vim*
find . -maxdepth 1 -name "*vim*"
Bashで、dotglobオプションを有効にします。
shopt -s dotglob
デフォルトでは、隠しファイルは、驚きや煩わしさを引き起こさないように非表示になっています。たとえば、ホームディレクトリでls
を実行し、先月のファイルをいくつか確認し、rm *net*
で無意識のうちに削除しようとします。注意深く書かれた.nethackrc
。
ZSHでは(GLOB_DOTSを変更せずに)次のことができます
ls -lad *vim*(D)
@daniel kullmanの答えに基づいて構築するために、これは、厳密には単一のゴブではありませんが、かなり単純なグロブで必要なことを達成しているようです。
grep blah {,.}[!.]*