如何正确检查文件夹层次结构的删除/写入权限?

时间:2012-01-02 16:30:20

标签: bash

在我正在处理的脚本中,我想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

现在我想知道是否有更好的解决方案(更具可读性,更短,更可靠等)。

请注意,我完全了解检查和实际删除之间的文件访问权限可能会发生变化。在我的用例中,这是可以接受的(与不进行任何检查相比)。如果有办法避免这种情况,我很想知道如何。

1 个答案:

答案 0 :(得分:6)

您是否知道-perm的{​​{1}}切换(如果您的版本中存在)?

find