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。而不是我如何
cat
使用 bash 腳本或for
/while
使用正則表達式的語句將一些文件放在一起。
您正在尋找的功能就在那裡。您只是
*
在範例中缺少 a 。鍵入cat file000[1-3]*``ESC``*
它應該可以工作。我認為是這種情況,因為如果 readline 函式insert-completions
(綁定到ESC``*
)不匹配任何文件,它將不會擴展 glob 模式。如果沒有最後一個*
,它與文件不匹配。您可以在手冊頁的“擴展”小節“路徑名擴展”部分中閱讀有關此內容。
大括號是你需要的
cat file000{1,2,3}.txt
這將轉換為:
cat file0001.txt file0002.txt file0003.txt