1. 程式人生 > >mkdir:批量建立資料夾

mkdir:批量建立資料夾

問題:mkdir dir[0-9]建立資料夾時,並沒有如預期建立dir0~dir9這幾個資料夾,而是建立了dir[0-9]這一個資料夾。

網上看了些相關資料,發現以前對[0-9]的理解不夠透徹:

“由於[0-9]這種匹配模式是出現在命令的 argument位置上,所以由shell負責解釋(所以嚴格而言, [0-9]是萬用字元,而不是正則表示式)。對shell而言,統配符只對檔名有效,也就是說,當shell遇到出現在某個命令列的argument位置上的萬用字元時,它先要去引數所指定的目錄下搜尋所有已經存在的檔案,所有檔名字與之匹配的都要替換到argument位置上(這與很多標準的命令支援多個檔名引數是一致的),然後呼叫該命令執行. 
 
對於mkdir ./dir[0-9]而言,shell無法在當前目錄下找到與之匹配的檔名,所以就不替換,dir[0-9]按照原樣傳給mkdir程式,所以mkdir就建立了一個名字為dir[0-9]的目錄. 
 
 總之一句話,萬用字元(出現在argument位置)由shell負責解釋(與現有的檔名匹配),與具體的命令(ls,rm,mkdir)無關.正則表示式(出現在option位置上)由具體的應用程式解釋(grep,sed,awk),與shell無關。”

---引自:http://blog.chinaunix.net/u/19782/showart_340548.html

那麼如何利用mkdir批量建立資料夾呢?

1.seq -f "dir%01g" 1 9| xargs mkdir

 #seq -f :格式化輸出,有點類似printf

2.mkdir dir{1..5}