読み取り専用ディレクトリを実行して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
}