为什么我用 mv 命令丢失了所有文件?

为什么我用 mv 命令丢失了所有文件?

我想将目录的全部内容(包含所有子文件夹)向上移动一级

cd /dir/subdir
mv * /dir
cd ..
rm -R subir/

/dir有所有文件夹和子文件夹,但它们是空的。我做错了什么?

文件系统是 BTRFS,我尝试过btrfs restore但没有成功。

任何帮助,将不胜感激。

答案1

让我们看看你做了什么。我假设所有命令都是标准工具,没有以任何方式进行调整。 (检查type cdtype mvtype rm。如果有的话,aliased我们需要知道这一点。例如,mv is aliased to 'mv -i'是我们需要知道的事情,但是cd is a shell builtin或 也rm is /bin/rm可以。)

  1. cd /dir/subdir

    移动到文件系统中的绝对路径。假设没有报告任何错误,您现在处于/dir/subdir.

  2. mv * /dir

    将此目录中可见的所有内容移至绝对目录/dir。假设没有名称以 开头的文件-(因为您忘记了--)并且没有报告任何错误,则 中的所有文件和目录/dir/subdir现在都位于/dir.

    文件(和子目录,如果有)被移动,而不是复制,因此文件内容不会以任何方式被触及或更改除非 /dir/subdir位于不同的文件系统上/dir

  3. cd ..

    取决于您的 shell 或提供subdir不是到文件系统其他部分的符号链接,如果没有报告任何错误,您现在应该处于/dir.

    要绝对确定您所在的目录,请使用pwd -P.

  4. rm -R subir/

    该命令可能应该失败。但也许你的意思是rm -R subdir,在这种情况下目录subdir 以及任何剩余内容将被删除。

    您可以rmdir subdir删除该目录,以便系统在该目录意外非空时向您发出警告。

如果此时文件为空并且您输入的任何命令都没有错误,那么在你开始之前它们都是空的。

相关内容