重命名时文件丢失

重命名时文件丢失

我写了一个 shell 脚本来重命名一大堆文件。不幸的是,我不小心用 Windows EOL 保存了它,因此每个文件末尾的 control-m 字符弄乱了文件名。

当我犯了另一个错误时,我正在单独重命名它们:

mv abc\ -\ 123.dat^M abc\ -\ 123.da

一旦注意到我错过了名称末尾的“t”,并且没有检查文件是否仍然存在(我没有理由怀疑),我快速执行了以下操作:

mv *.da *.dat

我的文件不见了...也没有错误。

有人知道会发生什么吗?

我运行的是 CentOS 6,操作系统 FS 是 ext4,发生这种情况的 raid 阵列的 FS 是 XFS。

谢谢,E。

答案1

该问题在评论中得到回答,但回答评论需要格式化:mv默认情况下将替换现有文件(这-i会阻止),但如果不可写则不会(这-f会覆盖):

           目标是否存在 目标存在 目标存在
命令不存在且可写 不可写

mv -i 创建提示符提示符
mv create REPLACE 提示符
mv -f 创建替换 替换

相关内容