Linux三種通配符
基本的通配符有以下幾個:
? 可替代單個字符
* 可替代多個字符
[charset] 可替代charset集中的任意單個字符
下面以例子加以說明:
如文件夾中有這些文件foo1, ..., foo9, foo10, ..., foo278,如果使用
rename foo foo0 foo?
則它只會把foo1到foo9的文件重命名爲foo01到foo09,因爲?通配符只能替代單個字符,所以被重命名的文件只是有4個字符長度名稱的文件,文件名中的foo被替換爲foo0。
再繼續使用
rename foo foo0 foo??
則文件夾中的foo01到foo99的所有文件都被重命名爲foo001到foo099,而foo100及其以後的文件名都不變,因爲通配符?的使用,所以只重命名5個字符長度名稱的文件,文件名中的foo被替換爲foo0。
如果再繼續使用
rename foo foo0 foo*
則foo001到foo278的所有文件都被重命名爲foo0001到foo0278,因爲通配符*可替代多個字符,所以,所有以foo開頭的文件都被重命名了,文件名中的foo被替換爲foo0。
我們再來看通配符[charset]的用法,還是繼續在上面所說的文件夾中,執行如下命令
rename foo0 foo foo0[2]*
則從foo0200到foo0278的所有文件都被重命名爲foo200到foo278,文件名中的foo0被替換爲foo。
在使用中,三種通配符可以一起結合使用,關於具體的其它用法就只有自己不斷的摸索了。
? 可替代單個字符
* 可替代多個字符
[charset] 可替代charset集中的任意單個字符
下面以例子加以說明:
如文件夾中有這些文件foo1, ..., foo9, foo10, ..., foo278,如果使用
rename foo foo0 foo?
則它只會把foo1到foo9的文件重命名爲foo01到foo09,因爲?通配符只能替代單個字符,所以被重命名的文件只是有4個字符長度名稱的文件,文件名中的foo被替換爲foo0。
再繼續使用
rename foo foo0 foo??
則文件夾中的foo01到foo99的所有文件都被重命名爲foo001到foo099,而foo100及其以後的文件名都不變,因爲通配符?的使用,所以只重命名5個字符長度名稱的文件,文件名中的foo被替換爲foo0。
如果再繼續使用
rename foo foo0 foo*
則foo001到foo278的所有文件都被重命名爲foo0001到foo0278,因爲通配符*可替代多個字符,所以,所有以foo開頭的文件都被重命名了,文件名中的foo被替換爲foo0。
我們再來看通配符[charset]的用法,還是繼續在上面所說的文件夾中,執行如下命令
rename foo0 foo foo0[2]*
則從foo0200到foo0278的所有文件都被重命名爲foo200到foo278,文件名中的foo0被替換爲foo。
在使用中,三種通配符可以一起結合使用,關於具體的其它用法就只有自己不斷的摸索了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.