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

使用xargs与rm时遭遇权限问题:sudo应放置在何处?

问题出在sudo的作用范围!

你当前的命令sudo cat remove.txt | xargs rm里,sudo只作用于cat命令——也就是说,你只是用root权限读取了remove.txt,但后面的xargs rm还是以你的普通用户身份执行的!这就是为什么明明文件设了777权限,还是会弹出权限拒绝的提示(毕竟删除文件其实更多依赖的是文件所在目录的写入权限,而不是文件本身的权限,不过这里核心问题是rm没用到root权限)。

正确的做法:让sudo作用于rm命令

你只需要把sudo放到rm前面就行,这样xargs调用的rm会以root权限执行,具体命令是:

cat remove.txt | xargs sudo rm

如果remove.txt里的文件名包含空格或者特殊字符,更稳妥的写法是用-0参数避免解析错误:

cat remove.txt | tr '\n' '\0' | xargs -0 sudo rm

或者用xargs的-I参数(适合文件名带特殊字符的场景):

cat remove.txt | xargs -I {} sudo rm {}

额外提醒:为什么777权限还可能删不了?

就算用了sudo,如果你遇到还是删不掉的情况,可能是文件被设置了不可变属性(比如用chattr +i命令标记过),这时候需要先执行sudo chattr -i 文件名去掉属性再删除。不过你的问题核心还是sudo的位置不对,先调整命令位置应该就能解决。

内容的提问来源于stack exchange,提问作者Rusvi Kaos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:37:38