在我正在处理的脚本中,我想rm -rf
一个文件夹层次结构。但在此之前,我想确保该过程能够成功完成。所以,这就是我提出的方法:
#!/bin/bash
set -o nounset
set -o errexit
BASE=$1
# Check if we can delete the target base folder
echo -n "Testing write permissions in $BASE..."
if ! find $BASE \( -exec test -w {} \; -o \( -exec echo {} \; -quit \) \) | xargs -I {} bash -c "if [ -n "{}" ]; then echo Failed\!; echo {} is not writable\!; exit 1; fi"; then
exit 1
fi
echo "Succeeded"
rm -rf $BASE
现在我想知道是否有更好的解决方案(更具可读性,更短,更可靠等)。
请注意,我完全了解检查和实际删除之间的文件访问权限可能会发生变化。在我的用例中,这是可以接受的(与不进行任何检查相比)。如果有办法避免这种情况,我很想知道如何。
答案 0 :(得分:6)
您是否知道-perm
的{{1}}切换(如果您的版本中存在)?
find