Bash ワイルドカード

Bash ワイルドカード

少なくとも3文字(文字「l」で始まる)を含むすべてのファイルを見つける必要があります。

私はこれを使用していますが、3文字未満のファイルも提供します。

LS | grep "^l"

最小長さを決定できますか?私は文字「?」が正しい長さに使用されることを知っています。

答え1

Bash ワイルドカード

正規表現を使用しないでください。使用(bashを使用すると仮定)。

ls l??*

説明する

  • ?単一文字を表します。
  • *0個以上の文字を表します。

正規表現

本当に正規表現を使用したい場合は、次のものを使用できます。

ls | grep "^l...*"

説明する

  • .単一文字を表します。
  • .*0個以上の文字を表します。

答え2

利用可能な代替ソリューションは次のとおりです。findそれ以外の場合でも機能しますbash。このソリューションは、文字「l」で始まる3文字以上の文字を持つすべてのファイルとフォルダを検索します(以下のファイルのみのバージョンを参照)。再帰的(下記の非再帰を参照)以下で実行します。

find . -regex '.*/l[^/][^/][^/]*'

非再帰的バージョン(現在のディレクトリにあるバージョンのみを検索)は次のとおりです。

find . -maxdepth 1 -regex '.*/l[^/][^/][^/]*'

フォルダを含めない場合は、次のものを使用できます。

find . -type f -regex '.*/l[^/][^/][^/]*'

または(非再帰的)

find . -maxdepth 1 -regex '.*/l[^/][^/][^/]*'

関連情報