현재 소유자/그룹을 재귀적으로 변경하려면 다음을 수행합니다.
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
작동하고 속도를 높일 수 있습니다 .