Linux mv命令将数据移动到未知位置?


11

我不小心在SSH中执行了这个命令:

mv /var/www/vhosts/website/httpdocs/magento/*

现在,magento目录中的所有数据都消失了。有谁知道它搬到了哪里?

谢谢!


要自动确定数据所在的目录以及是否使用Bash,请执行以下操作: a=( /var/www/vhosts/website/httpdocs/magento/* ); echo "${a[${#a[@]}-1]}"。如果不是在Bash,这应该工作: printf '%s\n' /var/www/vhosts/website/httpdocs/magento/* | tail -1。否则,它很可能在最后一个目录中,按字母顺序排列。完成。
gniourf_gniourf

Answers:


20

如果此目录中按字母顺序排列的最后一个条目是目录本身,则它们就在那里。

假设你有文件 abc 和目录 d。在这种情况下,

mv /var/www/vhosts/website/httpdocs/magento/*

扩展到

mv /var/www/vhosts/website/httpdocs/magento/a /var/www/vhosts/website/httpdocs/magento/b /var/www/vhosts/website/httpdocs/magento/c /var/www/vhosts/website/httpdocs/magento/d

这是一个将所有内容移动到的命令 d。看看有没有什么。

如果 d 不是目录, mv 应该抱怨这个。


1
+1:查看/ var / www / vhosts / website / httpdocs / magento / *目录下的子目录。提示:子目录 仍然 在magento目录中,所以应该很容易,因为现在几乎所有其他东西都应该在它下面,因此只剩下一个目录(不包括以'。'开头的那些)。输入该子目录,然后输入“mv * ..”。这个 可以 然而,移动以前正好在该目录下面的东西,所以你必须把它们放回去。 +任何与magento / *文件同名的文件都会被覆盖(如果你的“mv”没有别名为“mv -i”)
Olivier Dulac

2
整洁的把戏 mv *mkdir zzz; mv * 这会将当前目录的所有内容移动到目录zzz中。只要确保你没有任何在zzz之后以lexagraphically排序的文件。

2

扩展glglgl的回复:

类Unix操作系统中的命令行通配符扩展由shell执行。在Linux的大多数情况下,它会 bash。其手册页明确指出通配符扩展将按字母顺序排序。对于大多数兼容Bourne的shell,这同样有效。


可能不仅是大多数,而是所有。否则就缺乏兼容性。
glglgl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.