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

正規表現を使用して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を自動補完する方法です。代わりにcatbashスクリプトを使用するか、正規表現for/whileステートメントを使用していくつかのファイルをまとめる方法は何ですか?

答え1

あなたが探している機能はここにあります。*あなたの例には欠けているものがあります。入力cat file000[1-3]*ESC*すると動作します。私はこれがどのファイルとも一致しない場合insert-completions(にバインドされている)readline関数がESC*globパターンを拡張しないので、そのような場合だと思います。最後のエントリがない場合、*ファイルと一致しません。

することができますマニュアルページ、「拡張」セクション「パス名拡張」。

答え2

校正器だけでいいです

cat file000{1,2,3}.txt

これは次のように翻訳されます。

cat file0001.txt file0002.txt file0003.txt

関連情報