次のファイルを含むディレクトリがあるとします。
$ 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を自動補完する方法です。代わりにcat
bashスクリプトを使用するか、正規表現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