如果您运行rm -rf dir
并dir
包含只读目录,那么它将无法删除该目录中的任何文件。
有什么办法可以让rm
该chmod
目录首先被识别并可写吗?
我可以chmod -R o+w dir
先这样做,但这会比只在必要时才这样做要慢。
答案1
有什么办法可以让
rm
该chmod
目录首先被识别并可写吗?
该rm
命令需要对目录的写访问权限才能从中删除文件和目录。
您的选择是
- 修复权限以确保不可写目录可写 (
chmod -R u=rwx {toplevel_directory}; rm -rf {toplevel_directory}
) - 使用 root 权限来获得隐式写入访问权限(不真正推荐
sudo rm -rf {toplevel_directory}
:)
如果您非常关心速度优化,您可以编写一个脚本或函数,rm
仅在第一次失败时重试:
rm-rf() {
local item rs=0 ss=0
for item in "$@"
do
if [ -e "$item" ]
then
rm -rf "$item"
rs=$?
if [ $rs -gt 0 ]
then
# Try again
chmod -R u=rwx "$item" 2>/dev/null
rm -rf "$item" 2>/dev/null && rs=0
fi
[ $rs -eq 0 ] && echo "Removed: $item" >&2
else
echo "Skipping: $item" >&2
rs=1
fi
# Count the number of failed arguments
[ $rs -gt 0 ] && ((ss++))
done
return $ss
}