현재 디렉터리에 영향을 미치는 명령 없이 하위 디렉터리의 특정 명령만 실행할 수 있는 명령을 실행하는 방법을 찾고 있습니다.
find -name ":RUN" -exec rm -rf {} \;
내가 얻은 디렉토리 이름이 이면 level0
하위 디렉토리 이름은 입니다 level1
. 위의 예제 명령을 디렉터리에서 실행하면 디렉터리뿐만 아니라 level0
명령 도 영향을 받습니다.level1
level0
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
.