QA@IT

拡張子のないファイルを指定するワイルドカード

7774 PV

bashで拡張子のないファイル名(例foo )にマッチするワイルドカードはどう書けばいいのでしょうか?

回答

bash であれば拡張パターンマッチング機能で可能だと思います。

# 拡張されたパターンマッチング機能を有効にする
shopt -s extglob

extglob が有効になっている場合は !(pattern-list) で与えられたパターンいずれにも含まれないもの全てにマッチ。

ls
#=> fuga  hoge  test.gif  test.jpg

# . を含まないものにマッチ
ls !(*.*)
#=> fuga  hoge
編集 履歴 (0)
  • ありがとうございます。 -

[!.]{,[!.]{,[!.]{,[!.]{,[!.]{,[!.]{,[!.]{,[!.]{,[!.]{,[!.]}}}}}}}}} で10文字以内の
拡張子のないファイル(またはフォルダ)がポータブルにマッチします。
(POSIX sh 互換ならなんでも)
ネストを増やせば文字数を増やせます。

編集 履歴 (0)
  • extglobを使わない方法も気になっていたので、すっきりしました。ありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。