如何解决对花括号如何在 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。