cp .* /home/name 删除 /home/name 中的所有文件

cp .* /home/name 删除 /home/name 中的所有文件

不久前,我为我的笔记本电脑买了一个新的 ssd,所以我把所有东西都放到了新驱动器上,用了一段时间,没有问题。我决定把旧驱动器放回我的笔记本电脑,把新的 ssd 放进一个 nvme-USB 连接器。我想复制我的个人文件,但我不确定一切是否都会按计划进行,所以我把 /home/name 中的所有内容都移到了 /home/name/oldstuff 这个新文件夹中,这样我就可以返回了。我脑子里一时犯了错误,一开始用的是 mv 而不是 cp:

cd /media/drive/home/name
mv * /home/name

但遗漏了所有以“.”开头的文件,所以我做了

cp .* /home/name

我开始收到与相对路径 ./../othername 中的内容的权限相关的错误,我认为最安全的做法是按 CTRL+C,然后执行

cp .[a-z]* /home/name

完成后,/home/name 中的所有内容都消失了(包括我做的错误位置的备份),其中一些内容相当重要。我有什么办法可以恢复它们吗?

答案1

使用如下全局字符* 应该非常小心地做并且您应该知道它们如何被您的 shell 扩展并作为参数传递给您的命令。

  • *将扩展至包括以下文件和目录当前目录

  • .*将扩大到包括当前目录 .上一级目录 ..

  • .[a-z]*将扩大到包括当前目录中的隐藏文件/目录,其名称首字母为小写

例如,要查看如何.*在您的系统上运行扩展,set -x然后运行:

ls .*

或者echo像这样使用来打印扩展列表:

echo .*

或者使用readlink -f来获取扩展列表的完整路径,如下所示:

readlink -f .*

相关内容