Sco*_*ank 3 command-line bash 16.04
我运行了 mv 命令来移动两个文件,我们称它们为 file_name_1、file_name_2。我使用的命令是:
mv file_name* /u/projects/lib
Run Code Online (Sandbox Code Playgroud)
我的假设是这会将两个文件移动到 lib 目录中。最终发生的是 file_name_2 被正确移动,但 file_name_1 已从我将其移动的目录和我将其移动到的目录中删除。
丢失文件没什么大不了的,因为我能够从备份中恢复文件并且没有丢失任何工作,但我很好奇为什么会发生这种情况以及防止它再次发生的最佳方法是什么?(现在我只是复制文件,然后一旦我确定它复制得很好就删除源文件)
Rin*_*ind 12
mv 命令删除源目录和目标目录中的文件
-不可能的-。这不是 mv 的工作方式。- "mv" 执行 "cp -a" 如果它实际移动文件(如跨文件系统),并且只有当它得到确认 "cp -a" 成功时,它才会删除。有关这$ info mv方面的详细说明,请参见。
在同一文件系统中移动文件使用重命名调用,这只是元数据更改。文件本身没有被触及。
mv 文件名* /u/projects/lib
“file_name*”可能是 1 个文件,而“lib”不存在。因此,您通过省略“/u/projects/lib”末尾的“/”将“file_name*”重命名为“lib”。如果您添加了“/”,该命令将显示目录“lib”不存在的错误。不跨越文件系统边界的文件重命名只是元数据更改。
如果“file_name*”是 2 个或更多文件,您将收到关于将文件移动到同一文件的错误。如果“lib”作为目录存在,您会在“lib/”中找到文件
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |