在我正在处理的脚本中,我想要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
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否有更好的解决方案(更可读,更短,更可靠等).
请注意,我完全清楚检查和实际删除之间的文件访问权限可能会发生变化.在我的用例中,这是可以接受的(与不进行任何检查相比).如果有办法避免这种情况,我很想知道如何.
您是否知道-perm切换find(如果您的版本中存在)?
find -perm -u+w
Run Code Online (Sandbox Code Playgroud)