wake-up-neo.com

소유자 / 그룹을 재귀 적으로 변경하는 더 빠른 방법?

현재 소유자/그룹을 재귀 적으로 변경하려면 다음과 같이하십시오.

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

그러나 각 명령마다 몇 분이 걸릴 수 있습니다. 한 번에 하나씩 대신 모든 파일을 한 번에 (훨씬 더 빠르게) 변경할 수있는 방법이 있다고 들었지만 정보를 찾을 수없는 것 같습니다. 그렇게 할 수 있습니까?

23
danzo

chown의 재귀 옵션을 사용하십시오.

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

*.[^.]*를 모두 지정하면 find에있는 모든 파일과 디렉토리가 일치합니다. 현재 권장되는 구분 기호는 : 대신 .입니다. (- justins 에서 지적했듯이 .*를 사용하면 ...를 포함하도록 확장되어 chown 상위 디렉토리와 모든 하위 디렉토리의 소유권을 변경합니다.)

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

chown -R owner:group .
37
Stephen Kitt

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

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

경고! 일부 쉘에서는 chown -R owner:group * .*는 루트 디렉토리 /의 소유자를 대체합니다. 때문에 .* 의미 ../../../../root, ../bin ... etc. 모든 길. 그러나 가장 널리 사용되는 쉘인 bash..., 패턴 확장.

그러나 find 사용을 늦추는 주요 문제는 발견 된 모든 단일 디렉토리 및 파일에서 chmown를 호출한다는 것입니다. 사용하는 것이 훨씬 빠릅니다.

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

chown을 명령 줄에 맞는만큼의 매개 변수로 호출 할 때마다.

이 변경 사항은 chown와 같은 기본 제공 재귀 옵션이없는 다른 명령에서도 작동합니다. 이러한 재귀 옵션이 있지만 사용할 수없는 상황 (예 : chmod을 사용하고 디렉토리 만 변경하려는 경우)에서 작동하고 속도가 향상됩니다.

5
Anthon