发生了什么事?为什么?将文件移动到通配符,现在找不到移动的文件,新位置的内容缺少文件

发生了什么事?为什么?将文件移动到通配符,现在找不到移动的文件,新位置的内容缺少文件

今天早上昏昏欲睡的我将文件夹从位置 A 移动到了 B

我目前在 B 目录中,.我没有使用,而是使用了*

mv /home/user/temp/ *

在执行此操作之前,目录 B 有 4 个文件夹和一个文件。

现在目录 B 有一个文件夹。

我是不是不小心犯了什么错误?我需要再喝点咖啡,有什么办法可以纠正这个错误吗?

答案1

对你来说是个好消息!

您的所有文件和目录都位于唯一现有的目录下B/,包括源目录/home/user/temp/

事情的经过:

  • 当你mv /home/user/temp/ *在 时执行时B/,shell 会扩展*到目录上的所有文件和目录;这在运行B/之前首先发生mv

  • 幸运的是,目录最终按照路径名扩展的排序顺序出现,因此命令mv变成例如:

    mv /home/user/temp/ B/file1 B/file2 B/some_directory
    
  • 由于最后一个参数是目录,因此mv将所有文件和目录移动到该目录中。如果最后一个是文件,mv则会显示错误,即目标不是目录(因为涉及多个源)。

相关内容