이름이 있는 디렉터리에서 반복적으로 명령을 실행합니다.

이름이 있는 디렉터리에서 반복적으로 명령을 실행합니다.

AIX에는 다음과 같은 디렉토리 구조가 있습니다.

codeRepo/REPO1/AREA1/objects
codeRepo/REPO1/AREA2/SUBAREA1/objects
codeRepo/REPO1/AREA2/SUBAREA2/objects

codeRepo에서 트리의 chown myUser *모든 디렉토리에서 실행 하고 싶습니다. objects보시다시피, 위치마다 다른 개체 디렉터리가 있습니다.

답변1

서브파일이 아닌 디렉토리만 삭제하려면 find -exec다음과 같이 를 사용하세요.

find -type d -name objects -exec chown myUser {} \;

이렇게 하십시오: -type d디렉터리만 선택 -name objects정확히 "object"라는 이름의 디렉터리만 찾습니다. 발견된 각 경로에 대해 -exec chown myUser {} \;다음을 수행합니다 chown myUser {}({}를 경로로 교체).

chown내부의 모든 파일 chown도 삭제하려면 chown -R.

답변2

당신은 자신의 질문에 거의 대답했습니다. 대답은 재귀 옵션 -R을 사용하는 것입니다.

명령 실행sudo chown -R 리치 코드Repo/(사용자 이름이 richie라고 가정)

이렇게 하면 모든 파일/폴더를 소유자로 재귀적으로 설정하지만 가능한 한 트리 위쪽으로 설정하므로 더 많은 파일/폴더가 소유자로 지정됩니다.강력한방법.

답변3

bash옵션을 사용하여 globstar원하는 깊이로 이동하세요 **.

언제 codeRepo:

shopt -s globstar
chown myUser REPO1/AREA*/**/objects

AREA정확성을 위해 이름 뒤에 숫자(문자)가 하나만 있는 경우 ?단일 문자를 나타내는 데 사용합니다.

chown myUser REPO1/AREA?/**/objects

마찬가지로 두 문자의 경우:

chown myUser REPO1/AREA??/**/objects

관련 정보