我是在移动硬盘一个 fat32 分区里面( cd /Volumes/fat32
),想删除某个文件夹内以 "._" 开头的文件,然后就执行了以下命令:
sudo find . -name "._*" -exec rm -rf {} \;
等待的时间比较长,就想着去别的目录( /data
)干点事,然后发现 /data
目录不见了!!然后 cd /
,发现 /
也不见了!!
结果就是我用 time machine 恢复到昨天的版本了(今天 time machine 没跑)。
问题来了,这条命令出啥问题了?之前在 Linux 下用过这命令没问题啊。命令应该没输错,我是复制的。
1
xuyinan503 2015-11-22 21:05:41 +08:00 1
没找到 ._开头的文件,得到空
然后就执行了 rm -rf ? |
2
crayygy 2015-11-22 21:33:13 +08:00 1
不要乱执行 rm -rf ,任何时候再执行这个操作的时候都应该三思
|
3
hicdn 2015-11-22 21:37:26 +08:00 6
批量删除一般都是 ls|find|grep 重定向 /tmp/xx.txt
确认一遍后再 cat /tmp/xx.txt|xargs rm -rf |
5
wolfan 2015-11-22 21:47:32 +08:00 via Android 1
… 我好像一直在用这条命令删东西,到现在还没出过事真是感动啊😉
|
7
v1024 2015-11-22 22:02:22 +08:00 1
骚年,用 trash 保平安。
|
8
cxh116 2015-11-22 22:11:44 +08:00 1
看命令本身没有问题. 有可能是 bsd 的命令行 bug.
碰到几次用 7z 解压 zip 出来乱码.然后用 ls grep xargs 等命令组合起来就是删除不掉.总是有字符转义问题. 有可能是你的要删除掉的文件名有一些特殊字符,最终某行被解析成 rm -rf /. rm -rf 别乱用 sudo.更别乱 su - root 执行 rm -rf |
9
yanw OP |
10
cxh116 2015-11-22 22:15:31 +08:00 1
@cxh116 可以在 mac 下运行这样的命令测试
cd /tmp/ touch "a b" find . -name "a b"| xargs rm 报这样的错 rm: ./a: No such file or directory rm: b: No such file or directory |
12
cxh116 2015-11-22 22:23:25 +08:00
@cxh116 测试了一下,linux 也有此问题.应该是用法不对,特殊字符需要加特殊参数对待.
http://stackoverflow.com/questions/16758525/use-xargs-with-filenames-containing-whitespaces |
14
crayygy 2015-11-22 22:41:51 +08:00
其实 Adobe 才是真正的防 rm -rf 利器 :doge
|
15
lululau 2015-11-22 22:52:16 +08:00 via iPhone 1
用 find dir -other-opts -delete 代替 -exec rm {} \;
|
19
iphone7166 2015-11-23 01:45:29 +08:00 1
find . -name "._" -print
确认后 find . -name "._*" -delete |
20
WildCat 2015-11-23 08:40:53 +08:00 via iPhone 2
brew install trash
alias rm="You should use 'del' instead." alias del="trash" |
21
dorentus 2015-11-23 11:59:51 +08:00
rm 文件不要加 -rf 啊
|
22
hyq 2015-11-23 14:17:19 +08:00 1
名字里面有空格?
dot_clean 可以删除那些点文件 |
23
JerningChan 2015-11-24 16:44:12 +08:00
你应该这样的,到去你的目的盘
rm -rf ._* 这样就好了嘛... 为毛要写的这么繁杂? |
24
JerningChan 2015-11-24 16:46:51 +08:00
而且._* 这类文件好像是 mac 的 spotlight 产生的吧?
完全没必要删了呀 |