如果我这样做:
touch {1,2,3}.txt
我明白了
1.txt 2.txt 3.txt
但如果我这样做
touch {"File 1", "File 2"}.txt
我没有得到预期结果'File 1.txt' 'File 2.txt'
。在这种情况下,正确的方法是什么?
答案1
后面的空格会,
导致 shell 将你的表达式解析为两个单独的标记,而不是括号扩展:
$ printf '%s\n' {"File 1", "File 2"}.txt
{File 1,
File 2}.txt
您只需删除空格:
$ printf '%s\n' {"File 1","File 2"}.txt
File 1.txt
File 2.txt
所以
$ touch {"File 1","File 2"}.txt
$ ls
'File 1.txt' 'File 2.txt'
更紧凑地,你也可以使用touch "File "{1,2}.txt
或touch File\ {1,2}.txt
答案2
或者,也可以在 bash 中执行此操作for 循环像这样:
for f in "fil 1" "file 2"; do
touch "$f".txt
done