我有一个关于为什么这不起作用的问题。也许,这是一个简单的答案,但我似乎无法弄清楚。
我想移动我拥有的几个文件。它们都具有相同的文件名(假设为 file1),但它们都位于不同的目录中(假设为/tmp/dir1、dir2 和 dir3)。如果我要单独移动这些,我可以做一些类似的事情:
mv/tmp/dir1/file1/tmp
这有效。但是,我有多个目录,它们最终都会出现在同一个位置......而且我不想覆盖。所以,我尝试了这样的事情:
mv/tmp/{dir1,dir2,dir3}/file1/tmp/file1.{a,b,c}
当我尝试这个时,我得到:
/tmp/file1.c 不是目录
只是为了澄清...这也有效:
mv/tmp/dir1/file1/tmp/file1.c
很确定这与大括号扩展有关,但不确定原因。
谢谢
最佳答案
只需执行 echo
即可了解 shell 如何扩展:
$ echo mv /tmp/{dir1,dir2,dir3}/file1 /tmp/file1.{a,b,c}
mv /tmp/dir1/file1 /tmp/dir2/file1 /tmp/dir3/file1 /tmp/file1.a /tmp/file1.b /tmp/file1.c
现在您可以看到您的命令不是您想要的,因为在 mv
命令中,目标(目录或文件)是最后一个参数。
关于bash - 在命令行上使用大括号扩展移动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55856209/