2017-10-10 5 views
0

こんにちは私はUNIXを学んでいて、.で始まるすべてのファイルを表示するecho .??*を実行したいが、.または..を表示しない。echo。?? *を使用して、すべての隠しファイルを表示しますが、表示しません。自分自身

コマンドが正常に実行されているが、.a.b.cというファイルが表示されないことを意味します。

ファイルが

. .. .a .b .c .aa .bb .cc .aaa .abc a b c aaa bbb ccc 

ている場合は、エコーの出力は

.a .b .c .aa .bb .cc .aaa .abc 

どのようにコマンドを完了することができなければなりませんか?

+0

'echo。*'は何をしますか? – Blorgbeard

+0

@Blorgbeard No. – melpomene

+0

no、echo。*が表示されます。 .. – OsmaK

答えて

0

これは、あなたが使用しているシェルによって異なりますが、bashで、あなたは(extglobが有効になっていると仮定:shopt -s extglob):次の操作を行うことができます

echo [email protected](.?|[!.])* 

@(...|...)は、「または」のパターンです。これは、..?*または.[!.]*に一致するすべてのファイルに一致します。

..?*は、..で始まり少なくとも1つの他の文字で始まるファイルと一致します。これにより、..を除き、..で始まるすべての名前が検索されます。

.[!.]*は、.で始まり、その後に非.文字で始まるファイルと一致します。これは、すべての「通常の」隠しファイル(2番目の文字はドットではない)に一致します。

ご使用の例ではファイルのいずれも..で始まらないので、希望の出力を生成するには.[!.]*で十分です。

関連する問題