You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行sudo rm -r /路径/*删除目录现有内容却报‘No such file or directory’的问题咨询

执行sudo rm -r /路径/*删除目录现有内容却报‘No such file or directory’的问题咨询

嘿,我来帮你捋捋这个问题,你遇到的情况其实挺常见的,核心原因和权限以及shell通配符的展开逻辑有关:

首先,当你输入sudo rm -r /opt/atlassian/jira/work/*时,你的普通用户shell会先尝试解析*这个通配符,但你作为普通用户大概率没有访问/opt/atlassian/jira/work目录的权限,导致*无法被替换成目录里的实际内容(比如那个Catalina子目录),所以rm收到的是字面意义上的/opt/atlassian/jira/work/*路径,自然会提示“找不到文件或目录”。这里要注意:sudo只是给rm命令提升了权限,并没有让shell在root权限下展开通配符,这就是问题的关键。

给你几个实用的解决方案,选哪个都能解决问题:

  • 方法一:让root shell处理通配符
    直接用sudo调用shell执行删除命令,这样通配符会在root权限下被正确展开:

    sudo sh -c 'rm -r /opt/atlassian/jira/work/*'
    

    这里的sh -c会让root环境的shell先把*解析成work目录里的所有内容,再交给rm去删除,既不会报错,也不会删掉work目录本身。

  • 方法二:切换到root交互式shell操作
    如果觉得上面的命令有点绕,可以先切换到root的交互式shell,再一步步操作,更直观:

    sudo -s
    cd /opt/atlassian/jira/work
    rm -r *
    exit  # 操作完成后退出root环境
    

    所有步骤都在root权限下执行,完全不会有通配符无法展开的问题。

  • 方法三:用find命令安全删除
    要是担心误操作,推荐用find命令精准删除目录内的内容(自动排除目录本身):

    sudo find /opt/atlassian/jira/work -mindepth 1 -delete
    

    -mindepth 1表示只处理work目录下的子内容,绝对不会碰work目录本身,安全性拉满,适合对命令不太熟悉的场景。

另外补充下,你之前用sudo rm -r /opt/atlassian/jira/work/会删掉work目录,是因为你直接指定了目录本身,rm -r会递归删除整个目录结构,所以一定要注意路径的写法,或者用上面的方法来只删内容不删目录。

备注:内容来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 07:22:59