繁体   English   中英

对大括号在 shell 中如何工作的误解

[英]Misunderstanding in how curly braces work in shell

我在这里有一点误解。 所以,我执行这些命令:

mkdir Week\ {1..13}
touch {1..13}.txt

mv {1..13}.txt Week\ {1..13}

我的意图是将 1.txt 移至第 1 周,将 2.txt 移至第 2 周,依此类推,但所有文件最终都位于“第 13 周”目录中,我无法弄清楚它是如何工作的。 如果可能的话,谁能给我解释一下?

花括号在“大括号扩展”中扩展(参见man bash )。 所以你的最后一行扩展到

 mv 1.txt 2.txt 3.txt ... 13.txt Week\ 1 Week\ 2 ... Week\ 13

如果你查看man mv ,你会看到

 mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE...

它没有列出类似的东西

mv [OPTION] SOURCE1 DEST1 SOURCE2 DEST2

您可以使用循环将文件分发到目录中:

for n in {1..13} ; do
    mv "$n".txt "Week $n"
done

如果您没有对文件做任何其他事情而是创建它们,实际上您可以直接在循环中创建它们,因此您最初不需要在同一目录中创建它们:

for n in {1..13} ; do
    mkdir "Week $n"
    touch "Week $n/$n.txt"
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM