Bash
使用組合字母和數字的大括號擴展創建多個文件
我正在嘗試創建一系列帶有大括號擴展的文件。我想
fileA1
用fileZ100
所有可能的組合(類似的東西touch file[A..Z][1..100]
)創建文件。如果我執行該命令
touch $(printf "file%d " {1..100})
,則輸出正常:file1 file15 file21 file28 file34 file40 file47 file53 file6 file66 file72 file79 file85 file91 file98 file10 file16 file22 file29 file35 file41 file48 file54 file60 file67 file73 file8 file86 file92 file99 file100 file17 file23 file3 file36 file42 file49 file55 file61 file68 file74 file80 file87 file93 file11 file18 file24 file30 file37 file43 file5 file56 file62 file69 file75 file81 file88 file94 file12 file19 file25 file31 file38 file44 file50 file57 file63 file7 file76 file82 file89 file95 file13 file2 file26 file32 file39 file45 file51 file58 file64 file70 file77 file83 file9 file96 file14 file20 file27 file33 file4 file46 file52 file59 file65 file71 file78 file84 file90 file97
如果我執行相同
touch $(printf "file%c " {A..Z})
:fileA fileC fileE fileG fileI fileK fileM fileO fileQ fileS fileU fileW fileY fileB fileD fileF fileH fileJ fileL fileN fileP fileR fileT fileV fileX fileZ
我正在嘗試將它們結合起來
touch $(printf "file%c%d " {A..Z}{1..100})
,但輸出是:[...] -bash: printf: Y2: invalid number -bash: printf: Y4: invalid number -bash: printf: Y6: invalid number -bash: printf: Y8: invalid number -bash: printf: Y10: invalid number -bash: printf: Y12: invalid number -bash: printf: Y14: invalid number -bash: printf: Y16: invalid number -bash: printf: Y18: invalid number -bash: printf: Y20: invalid number -bash: printf: Y22: invalid number -bash: printf: Y24: invalid number -bash: printf: Y26: invalid number -bash: printf: Y28: invalid number -bash: printf: Y30: invalid number -bash: printf: Y32: invalid number -bash: printf: Y34: invalid number -bash: printf: Y36: invalid number -bash: printf: Y38: invalid number -bash: printf: Y40: invalid number -bash: printf: Y42: invalid number -bash: printf: Y44: invalid number -bash: printf: Y46: invalid number -bash: printf: Y48: invalid number -bash: printf: Y50: invalid number -bash: printf: Y52: invalid number -bash: printf: Y54: invalid number -bash: printf: Y56: invalid number -bash: printf: Y58: invalid number -bash: printf: Y60: invalid number -bash: printf: Y62: invalid number -bash: printf: Y64: invalid number -bash: printf: Y66: invalid number -bash: printf: Y68: invalid number -bash: printf: Y70: invalid number -bash: printf: Y72: invalid number -bash: printf: Y74: invalid number -bash: printf: Y76: invalid number -bash: printf: Y78: invalid number -bash: printf: Y80: invalid number -bash: printf: Y82: invalid number -bash: printf: Y84: invalid number -bash: printf: Y86: invalid number -bash: printf: Y88: invalid number -bash: printf: Y90: invalid number -bash: printf: Y92: invalid number -bash: printf: Y94: invalid number -bash: printf: Y96: invalid number -bash: printf: Y98: invalid number -bash: printf: Y100: invalid number -bash: printf: Z2: invalid number -bash: printf: Z4: invalid number -bash: printf: Z6: invalid number -bash: printf: Z8: invalid number -bash: printf: Z10: invalid number -bash: printf: Z12: invalid number -bash: printf: Z14: invalid number -bash: printf: Z16: invalid number -bash: printf: Z18: invalid number -bash: printf: Z20: invalid number -bash: printf: Z22: invalid number -bash: printf: Z24: invalid number -bash: printf: Z26: invalid number -bash: printf: Z28: invalid number -bash: printf: Z30: invalid number -bash: printf: Z32: invalid number -bash: printf: Z34: invalid number -bash: printf: Z36: invalid number -bash: printf: Z38: invalid number -bash: printf: Z40: invalid number -bash: printf: Z42: invalid number -bash: printf: Z44: invalid number -bash: printf: Z46: invalid number -bash: printf: Z48: invalid number -bash: printf: Z50: invalid number -bash: printf: Z52: invalid number -bash: printf: Z54: invalid number -bash: printf: Z56: invalid number -bash: printf: Z58: invalid number -bash: printf: Z60: invalid number -bash: printf: Z62: invalid number -bash: printf: Z64: invalid number -bash: printf: Z66: invalid number -bash: printf: Z68: invalid number -bash: printf: Z70: invalid number -bash: printf: Z72: invalid number -bash: printf: Z74: invalid number -bash: printf: Z76: invalid number -bash: printf: Z78: invalid number -bash: printf: Z80: invalid number -bash: printf: Z82: invalid number -bash: printf: Z84: invalid number -bash: printf: Z86: invalid number -bash: printf: Z88: invalid number -bash: printf: Z90: invalid number -bash: printf: Z92: invalid number -bash: printf: Z94: invalid number -bash: printf: Z96: invalid number -bash: printf: Z98: invalid number -bash: printf: Z100: invalid number
那麼……什麼是正確的正則表達式?我應該使用管道嗎?
所以在這裡:
printf "file%c%d " {A..Z}{1..100}
大括號擴展產生字元串,如
A1
,A2
,A3
…Z99
,Z100
. 然後printf
嘗試將它們與格式說明符匹配,%c
並%d
使用第一個 for%c
,第二個 for%d
,第三個 for%c
再次等。但是
%d
需要一個數字而A2
不是一個,所以有一個錯誤。
%c%d
會期望像A
,1
,A
,2
… 這樣的參數作為不同的參數,但是用大括號擴展很難生成。由於大括號擴展已經結合了字母和數字序列,您可以
printf "file%s " {A..Z}{1..100}
按原樣使用擴展的結果。甚至只是echo file{A..Z}{1..100}
。或者更直接的版本pLumo 的答案。