하위 디렉터리만 실행하는 명령을 처리하는 방법은 무엇입니까? [복사]

하위 디렉터리만 실행하는 명령을 처리하는 방법은 무엇입니까? [복사]

현재 디렉터리에 영향을 미치는 명령 없이 하위 디렉터리의 특정 명령만 실행할 수 있는 명령을 실행하는 방법을 찾고 있습니다.

find -name ":RUN" -exec rm -rf {} \;

내가 얻은 디렉토리 이름이 이면 level0하위 디렉토리 이름은 입니다 level1. 위의 예제 명령을 디렉터리에서 실행하면 디렉터리뿐만 아니라 level0명령 도 영향을 받습니다.level1level0

level1실행 시 디렉토리 에만 영향을 미치는 명령을 처리하는 방법은 무엇입니까 level0?

답변1

네가 말할 때

찾다   -무엇 …
당신은 실제로 말하고 있습니다
찾다 . -무엇 …
즉, 검색은 다음으로 시작됩니다..(현재 디렉토리). 하위 디렉터리에서만 검색하고 싶으므로 그것도 괜찮습니다.
찾다 ./*/-name ":RUN" -exec rm -rf {} ;
이름을 찾을 수 없습니다.첫 번째 .. 해당 디렉토리를 포함하고 bash를 사용하는 경우 먼저 이 작업을 수행하십시오 shopt -s dotglob.

PS Naive, find */ -…해당 이름의 파일이 존재하는 경우 사용하는 것이 더 안전합니다 find ./*/ -…../*/-.

답변2

노력하다:

find . -path './*/*' -type d -name ':RUN' -exec echo rm -rf -- {} +

-path './*/*'동등한 것으로 대체할 수도 있습니다 -mindepth 2.

관련 정보