web-dev-qa-db-ja.com

正規表現を使用してbashのファイル名を自動入力する方法はありますか?

次のようなファイルを含むディレクトリがあると仮定します。

$ ls
file0001.txt file0002.txt file0003.txt file0004.txt file0005.txt someotherfile.txt

次のコマンドを実行するとします。

$ cat file0001.txt file0002.txt file0003.txt file0004.txt file0005.txt 

次のようにbashショートカットを使用してこれを実現し、ファイル名を自動入力できます:cat file000 ESC*

いくつかの正規表現(正規表現)に従ってのみ自動入力するのと同様の方法でショートカットを使用することは可能でしょうか?例えば: cat file000[1-3] ESC* 取得するため:

$ cat file0001.txt file0002.txt file0003.txt

編集:この例でより意味をなすために上記で使用する必要があった正規表現:file000[1-3].txtまたはfile000[1-3]*

明確にするために、私の質問は、正規表現でbashを自動入力する方法についてです。また、bashスクリプトまたは正規表現を使用してcat/forステートメントを使用していくつかのファイルをwhileする方法ではありません。

5
moo

あなたが探している機能はそこにあります。例に*がありません。タイプcat file000[1-3]*ESC* そしてそれはうまくいくはずです。 readline関数insert-completions(これは ESC*)どのファイルとも一致しない場合、globパターンは展開されません。そして最後の*がないと、ファイルと一致しません。

これについては、 manページ のセクション「EXPANSION」サブセクション「PathnameExpansion」で読むことができます。

6
Lucas

中かっこは必要なものです

cat file000{1,2,3}.txt

これは次のように変換されます。

cat file0001.txt file0002.txt file0003.txt
0
john