2012-03-24 4 views
1

코드에 문제가있는 것을 쉽게 찾을 수 있습니까? 트리의 모든 파일을 삭제해야합니다.트리에서 파일 삭제

function option_c { 
for i in `find "$TEST_DIR" -type f | grep -E "(stdout|stderr|status)-(captured|delta)"` ; do 
    if [ -w $i ] ; then 
     rm $i 
    fi 
    exit 0 
done 
} 

감사합니다.

답변

3

exit을 제거하면 첫 번째 파일 다음에 스크립트가 종료됩니다.

find으로 모든 작업을 수행 할 수 있습니다.

1

tripleee 언급, 당신이 모든 발견에서 수행 할 수 있습니다

find "$TEST_DIR" -type f -perm +0200 -regextype posix-awk -regex ".*st(dout|derr|atus)-(captured|delta).*" -delete 

또는

find "$TEST_DIR" -type f -perm +0200 -regex ".*st\(dout\|derr\|atus\)-\(captured\|delta\).*" -delete 

find "$TEST_DIR" -type f -perm +0200 -exec egrep "(stdout|stderr|status)-(captured|delta)" {} ";" -delete 

(적어도 GNU 찾기,내가 가지고있는 모든 것, -delete 스위치와 regex-options을 가짐).

+0

'-delete'는'find' 명령에 대해 [필수] (http://pubs.opengroup.org/onlinepubs/009604599/utilities/find.html) 인 것처럼 보이지 않지만 모든 버전은 본 적이 있습니다 ... –

+0

원본의 'grep'은 일치하는 파일 이름을 찾는 것이 었습니다. 나는 당신이'-rname 'st (dout | derr | atus) - (caputured | delta)' '를 원한다고 생각하지만 나는 내 컴퓨터에 있지 않다. – tripleee

+0

@ tripleee : 예, 당신 말이 맞을 것 같습니다. -regex (gnu-find)로 변경되었습니다. –

관련 문제