在一個sh腳本中,我試圖遍歷所有匹配以下模式的文件
abc.123
基本上是abc。之後只有數字,以下號碼.
可以是任意長度。
使用在bash腳本中使用ls命令時的模式匹配
$ shopt -s extglob
$ ls abc.+([0-9])
做的工作,但在終端,而不是通過腳本。我怎樣才能得到符合模式的文件?
在一個sh腳本中,我試圖遍歷所有匹配以下模式的文件
abc.123
基本上是abc。之後只有數字,以下號碼.
可以是任意長度。
使用在bash腳本中使用ls命令時的模式匹配
$ shopt -s extglob
$ ls abc.+([0-9])
做的工作,但在終端,而不是通過腳本。我怎樣才能得到符合模式的文件?
,想必你也想成爲POSIX兼容的,你可以使用:
for f in ./*
do
echo "$f" | grep -Eq '^\./abc.[0-9]+$' && continue
echo "Something with $f here"
done
這將工作正常與空格,引號等文件名,但可能會匹配一些f ilenames換行符,它不應該。
如果您因爲使用bash而對您的問題bash
進行了標記,則只需使用您所描述的extglob即可。
,如果我理解你的權利,該模式可以轉化爲正則表達式:
^abc\.[0-9]+$
,所以你可以
繼續使用ls
和grep輸出。例如:
ls *.*|xargs -n1|grep -E '^abc\.[0-9]+$'
或使用如果您使用sh
而不是bash
find
發現有一個選項-regex
你確定腳本是用'bash'運行的,而不是'sh'嗎? – chepner 2013-02-23 00:15:39
謝謝你。這是一個sh腳本 – keeda 2013-02-23 00:16:23