소유자/그룹을 재귀적으로 변경하는 더 빠른 방법은 무엇입니까? [복사]

소유자/그룹을 재귀적으로 변경하는 더 빠른 방법은 무엇입니까? [복사]

현재 소유자/그룹을 재귀적으로 변경하려면 다음을 수행합니다.

find . -type f -exec chown <owner>.<group> {} \;
find . -type d -exec chown <owner>.<group> {} \;

그러나 각 명령에는 몇 분이 걸릴 수 있습니다. 한 번에 하나의 파일을 변경하는 것이 아니라 모든 파일을 한 번에(더 빠르게) 변경하는 방법이 있다고 들었는데 정보를 찾을 수 없는 것 같습니다. 나는 할 수있다?

답변1

사용된 chown재귀 옵션 :

chown -R owner:group * .[^.]*

둘 다 지정하면 모든 파일 및 디렉터리와 일치 *합니다 . 이제 권장되는 구분 기호는 입니다 ..[^.]*find:.저스틴을 사용하면 및 을 .*포함하도록 확장되어 상위 디렉터리와 모든 하위 디렉터리의 소유권이 변경될 수 있으므로 안전하지 않습니다. )...chown

현재 디렉터리의 소유권도 변경하려는 경우 다음과 같이 단순화할 수 있습니다.

chown -R owner:group .

답변2

chown자체 재귀가 있는 이와 같은 명령의 경우 이 옵션을 사용하는 것이 가장 빠릅니다.

 chown -R owner:group * .[^.]*

경고하다! 일부 셸에서는 이 형식이 chown -R owner:group * .*루트 디렉터리 /의 소유자를 대체합니다. 왜냐하면 ..*../../../../root, ../bin ... etc모든 경로. 그러나 가장 널리 사용되는 쉘은세게 때리다, 해당 없음 ...확장 모드.

그러나 사용 속도를 저하시키는 주요 문제는 발견된 모든 디렉터리와 파일에 대한 호출이라는 점을 이해하는 것이 find유용합니다 . chmown사용하는 것이 훨씬 빠릅니다.

find . -type f -exec chown <owner>:<group> {} +
find . -type d -exec chown <owner>:<group> {} +

모든 호출은 chown명령줄에 맞는 만큼의 인수를 사용하여 이루어지기 때문입니다.

chown이 변경 사항은 내장된 재귀 옵션이 없는 다른 명령(예: )에도 적용됩니다 . 재귀 옵션이 있지만 사용할 수 없는 경우(예: 를 사용하고 디렉토리만 변경하려는 경우)에 chmod작동하고 속도를 높일 수 있습니다 .

관련 정보