我在远程 Linux 服务器上做了一些愚蠢的事情:
- 我的工作目录是
/some/directory
- 我跑了
for dir in $(ls | grep "a_pattern"); do mv $d/* ./my_subdirectory; done
- 现在
/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 来比较目录。