2012-01-02 3 views
4

제가 작업하고있는 스크립트에서 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 

: 그래서,이게 내가 해낸 방법이다.

수표와 실제 제거 사이에 파일 액세스 권한이 변경 될 수 있다는 사실을 충분히 알고 있습니다. 내 유스 케이스에서는 받아 들일 수있다. 그러나 이것을 피할 수있는 방법이 있다면, 어떻게하는지 알고 싶습니다.

답변

6

-perm 스위치 (해당 버전이있는 경우)가 있습니까?

find -perm -u+w 
+0

아니요, 아닙니다. 힌트를 가져 주셔서 감사합니다. 나는 그것을 고려할 것이다. –

+0

좋아, 포기한다. 테스트를 올바르게 반전하려면 어떻게해야합니까? 귀하의 예는 쓰기 권한이있는 모든 파일을 나열합니다. 쓰기 권한이없는 모든 파일을 어떻게 나열합니까? 나는 그것을 작동시킬 수 없다. '찾는다. ! -perm -u + w'는 아무것도 표시하지 않고, 원래의 방법은 수많은 파일을 나열합니다. –

+0

그냥'! -perm/u + w' – fge

관련 문제