粗事了, 这样 rm -f 也中枪

2018-03-24 16:41:32 +08:00
 diveIntoWork

find /var/www/html/sorry/cache/ -cmin +1 -exec rm -f '{}' ;

写了一个删除缓存的命令,没有用通配符去匹配具体的某一类文件,结果没想到.和..两个隐藏文件夹,递归的把文件都删除了。。

现在看了一下,/root/ 下的所有文件都没了,/ 根目录下的好像幸免于难。。目前可以正常使用,但是我不敢重启了。。

也有可能只删除了 /root/目录下的文件?

常在河边走,终于湿鞋了

7106 次点击
所在节点    程序员
31 条回复
diveIntoWork
2018-03-24 16:42:28 +08:00
我好蠢,直接用 ls 就好了。
nosay
2018-03-24 17:07:27 +08:00
/root 下本来就没有什么东西吧…
FindBoyFriend
2018-03-24 17:11:13 +08:00
/root 系统好像没放文件在里面吧?
wangbenjun5
2018-03-24 17:14:03 +08:00
这种删除命令还是少用为好,用之前请反复确认
privil
2018-03-24 17:16:43 +08:00
type f
WordTian
2018-03-24 17:16:45 +08:00
有一些,比如.bashrc 等,但是这种文件不一定就被删了,就算删了,影响也不大
diveIntoWork
2018-03-24 17:17:45 +08:00
@nosay @FindBoyFriend 嗯,后来确认了一下,由于及时 ctrl -c 没删掉多少文件,root 下的文件拷贝其他服务器上的已经恢复了。

只是没想到掉这坑里了
songz
2018-03-24 17:38:26 +08:00
那正确的命令应该怎么写啊?
ferock
2018-03-24 17:53:46 +08:00
为什么要用递归。。。就像一楼自己说的,ls 不就行了吗?
diveIntoWork
2018-03-24 17:58:31 +08:00
@ferock 大概是短路了
likuku
2018-03-24 18:05:17 +08:00
论不要使用 root 账号作事情 /创建文件 的重要性...
xpresslink
2018-03-24 18:05:39 +08:00
正确的写法应当是 rm -Rf / 么?
likuku
2018-03-24 18:06:14 +08:00
如此这般,/root 下就没啥重要的文件了
Qoxan
2018-03-24 18:07:42 +08:00
find (dir) -mindepth 1 -maxdepth 1 ……
再加其它参数,就不会误删其他目录的东西了
chinvo
2018-03-24 18:08:24 +08:00
看不明白为啥用 find

ls 不好么
akira
2018-03-24 18:31:52 +08:00
删除的动作 再怎么小心也不为过。 除了文件 还是数据库的删除指令也是
geelaw
2018-03-24 18:36:23 +08:00
请自觉学习 -WhatIf
laoyur
2018-03-24 20:09:42 +08:00
所以,不会用 find 命令的表示很欣慰
diveIntoWork
2018-03-24 21:26:28 +08:00
@Qoxan 正解 @songz
angelface
2018-03-24 21:28:22 +08:00
建议你把 rm 用 mv 替换,然后定期清理,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/441051

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX