V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yanw
V2EX  ›  macOS

执行一条命令,把根目录给删了。

  •  
  •   yanw · 2015-11-22 20:46:57 +08:00 · 3188 次点击
    这是一个创建于 3081 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是在移动硬盘一个 fat32 分区里面( cd /Volumes/fat32 ),想删除某个文件夹内以 "._" 开头的文件,然后就执行了以下命令:

    sudo find . -name "._*" -exec rm -rf {} \;
    

    等待的时间比较长,就想着去别的目录( /data )干点事,然后发现 /data 目录不见了!!然后 cd /,发现 / 也不见了!!

    结果就是我用 time machine 恢复到昨天的版本了(今天 time machine 没跑)。

    问题来了,这条命令出啥问题了?之前在 Linux 下用过这命令没问题啊。命令应该没输错,我是复制的。

    24 条回复    2015-11-24 16:46:51 +08:00
    xuyinan503
        1
    xuyinan503  
       2015-11-22 21:05:41 +08:00   ❤️ 1
    没找到 ._开头的文件,得到空

    然后就执行了 rm -rf ?
    crayygy
        2
    crayygy  
       2015-11-22 21:33:13 +08:00   ❤️ 1
    不要乱执行 rm -rf ,任何时候再执行这个操作的时候都应该三思
    hicdn
        3
    hicdn  
       2015-11-22 21:37:26 +08:00   ❤️ 6
    批量删除一般都是 ls|find|grep 重定向 /tmp/xx.txt
    确认一遍后再 cat /tmp/xx.txt|xargs rm -rf
    Tiande
        4
    Tiande  
       2015-11-22 21:41:14 +08:00   ❤️ 1
    @hicdn 同意谨慎 rm
    然而这条命令到底哪里错了?
    wolfan
        5
    wolfan  
       2015-11-22 21:47:32 +08:00 via Android   ❤️ 1
    … 我好像一直在用这条命令删东西,到现在还没出过事真是感动啊😉
    hicdn
        6
    hicdn  
       2015-11-22 21:56:03 +08:00   ❤️ 1
    @dtdnqsb 没发现哪里有错啊
    v1024
        7
    v1024  
       2015-11-22 22:02:22 +08:00   ❤️ 1
    骚年,用 trash 保平安。
    cxh116
        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
    yanw
        9
    yanw  
    OP
       2015-11-22 22:13:50 +08:00
    @hicdn 新技能 Get ,感谢。

    @crayygy 谨慎是对的, 3 楼的方法就很赞。

    @dtdnqsb
    @wolfan
    @hicdn
    @xuyinan503

    不知道是不是因为在 fat32 分区下执行的命令?可是我在 fat32 下执行 find . -name "._*" 得到的文件确实是想得到的。

    复制过来的命令是 sudo find / -name "._*" -exec rm -rf {} \; 我把 / 改成 . 了,难道是改错,改成 sudo find / -name "/*" -exec rm -rf {} \; 了?感觉犯这个错的可能性还是挺低的。
    cxh116
        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
    yanw
        11
    yanw  
    OP
       2015-11-22 22:16:16 +08:00
    @v1024 几百个文件以 "._" 开头,必须命令行操作的,不过 rm 操作改成 mv 操作倒是可行。
    cxh116
        12
    cxh116  
       2015-11-22 22:23:25 +08:00
    @cxh116 测试了一下,linux 也有此问题.应该是用法不对,特殊字符需要加特殊参数对待.

    http://stackoverflow.com/questions/16758525/use-xargs-with-filenames-containing-whitespaces
    kn007
        13
    kn007  
       2015-11-22 22:23:52 +08:00
    @yanw 我觉得 3 楼方法相对可靠
    crayygy
        14
    crayygy  
       2015-11-22 22:41:51 +08:00
    其实 Adobe 才是真正的防 rm -rf 利器 :doge
    lululau
        15
    lululau  
       2015-11-22 22:52:16 +08:00 via iPhone   ❤️ 1
    用 find dir -other-opts -delete 代替 -exec rm {} \;
    yanw
        16
    yanw  
    OP
       2015-11-22 23:13:10 +08:00
    @crayygy 求解?
    v1024
        17
    v1024  
       2015-11-22 23:40:06 +08:00 via iPhone   ❤️ 1
    @yanw
    我知道你在用命令行
    brew install trash
    JJaicmkmy
        18
    JJaicmkmy  
       2015-11-22 23:44:57 +08:00 via iPhone   ❤️ 1
    @yanw 因为 Adobe 是 A 开头,先被删,而且小文件很多,删除要很久。
    iphone7166
        19
    iphone7166  
       2015-11-23 01:45:29 +08:00   ❤️ 1
    find . -name "._" -print
    确认后
    find . -name "._*" -delete
    WildCat
        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"
    dorentus
        21
    dorentus  
       2015-11-23 11:59:51 +08:00
    rm 文件不要加 -rf 啊
    hyq
        22
    hyq  
       2015-11-23 14:17:19 +08:00   ❤️ 1
    名字里面有空格?
    dot_clean 可以删除那些点文件
    JerningChan
        23
    JerningChan  
       2015-11-24 16:44:12 +08:00
    你应该这样的,到去你的目的盘
    rm -rf ._* 这样就好了嘛...
    为毛要写的这么繁杂?
    JerningChan
        24
    JerningChan  
       2015-11-24 16:46:51 +08:00
    而且._* 这类文件好像是 mac 的 spotlight 产生的吧?
    完全没必要删了呀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2417 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:09 · PVG 00:09 · LAX 09:09 · JFK 12:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.