我不小心将 /* 的一部分复制到 /some/directory,我应该如何修复我的错误?

我不小心将 /* 的一部分复制到 /some/directory,我应该如何修复我的错误?

我在远程 Linux 服务器上做了一些愚蠢的事情:

  1. 我的工作目录是/some/directory
  2. 我跑了for dir in $(ls | grep "a_pattern"); do mv $d/* ./my_subdirectory; done
  3. 现在/some/directory/my_subdirectory包含诸如bin boot dev和 之类的东西home,它们绝对不应该在那里

请随意指出#2 是多么愚蠢。如果我正确地理解了我的错误,$d则为空(我的意思是输入$dir- 即使进行了修复,它也可能是一个精心制作的命令,但我应该关闭这个括号),所以基本上我运行的命令是mv /* ./my_subdirectory.

当我意识到我做了什么时,我按下了 ctrl-c ctrl-c,所以命令在完成之前就被中断了。

我的问题有两个部分:首先,我应该做什么来解决这个问题;其次,我的命令实际上是吗?移动的东西/,还是只是复制它们?

我确实运行了mv,我是否期望它移动了一些东西,但我没有看到 下./my_subdirectory缺少任何东西/。如果我在这里说得不清楚,请告诉我。例如,/some/directory/my_subdirectory/bin包含 bash、cat、mount 和 mkdir,但这些程序仍然存在于 下/bin,就好像它们被复制而不是移动一样。这是为什么?我可以安全地删除 下的所有内容吗/some/directory/my_subdirectory,或者这会是一个可怕的错误?


根据评论中 tad 的建议,以下是一些输出find ./my_subdirectory -type f

./my_subdirectory/bin/umount
./my_subdirectory/bin/date
./my_subdirectory/bin/sort
./my_subdirectory/bin/red
./my_subdirectory/bin/dumpkeys
./my_subdirectory/bin/sleep
./my_subdirectory/bin/readlink
./my_subdirectory/bin/mv
...
./my_subdirectory/etc/security/pam_env.conf
./my_subdirectory/etc/security/chroot.conf
./my_subdirectory/etc/security/access.conf
./my_subdirectory/etc/security/namespace.init
./my_subdirectory/etc/security/group.conf
./my_subdirectory/etc/security/console.handlers

我检查过,这些文件仍然存在于/etc和下/bin。当我运行时,diff ./my_subdirectory/etc /etc我得到常见的子目录,其中一些仅在 中/etc,但没有任何仅在 中./my_subdirectory/etc。所以看起来东西是复制的而不是移动的。鉴于我没有mv以 sudo 身份运行命令,这是预期的吗?

答案1

假设您没有以 root 身份运行此命令,我会假设数据只是被复制。一种快速判断方法是运行 diff 来比较目录。

相关内容