問題: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}